R语言数据筛选,ICD10定义

R中,我想要对icd-10中C开头的疾病进行筛选,并筛选出对应的日期。
其中列名41270对应的是疾病编码,41280对应的是诊断日期。

img

img

  • 根据41270列中的诊断来筛选41280列中的日期,想要的结果是只保留在41270列中有C开头疾病编码的行的41280列中的日期。

  • 那么用apply 函数和 ifelse 函数。 apply 函数将函数应用于数据框的行或列,ifelse 函数则根据条件进行选择。

  • 遍历41270列,检查每个元素是否以"C"开头。如果是,保留对应的41280列的日期。如果不是,就把41280列的日期设为 NA。

# 假设你的数据框是 df
for (i in seq_along(df)) {
  if (grepl("^f\\.41270", names(df)[i])) {
    index = gsub("f\\.41270", "f\\.41280", names(df)[i])
    df[[index]] = ifelse(startsWith(df[[names(df)[i]]], "C"), df[[index]], NA)
  }
}

filter(disease,rowMeans(sapply(disease[,1:259],function(x)grepl("C",x),
                                  simplify = T,USE.NAMES = F))>0)

包含C的疾病代码的数据行已经筛选出来,如何将C开头疾病与之后日期进行对应,比如将C类对应的日期保留,其他日期进行缺失处理或删除。

基于new bing部分指引作答:
在R语言中,你可以使用条件筛选来选择特定条件下的数据。为了筛选以"C"开头的疾病编码和相应的诊断日期,你可以使用以下代码:

# 假设你的数据框名为df,包含列名4127041280
# 创建一个逻辑向量来指示满足条件的行
condition <- grepl("^C", df$`41270`)

# 使用逻辑向量筛选数据
filtered_data <- df[condition, c("41270", "41280")]

# 输出筛选后的数据
print(filtered_data)

在上面的代码中,grepl()函数用于检查以"C"开头的疾病编码。它返回一个逻辑向量,其中为TRUE的元素表示满足条件的行。然后,我们使用这个逻辑向量来筛选数据框中的行,并选择列名为"41270"和"41280"的列。最后,通过print()函数输出筛选后的数据。

请确保将代码中的"df"替换为你实际使用的数据框名称。

使用条件筛选选择以"C"开头的疾病编码,并提取对应的诊断日期

selected_data <- data[data$41270 %like% "^C", c("41270", "41280")]