我有一个数据集,其中的列Disease
包含字符串值。我还列出了一些罕见疾病的名字rare_disease
。
我想检查列Disease
的每个单元格是否包含列表rare_disease
中的元素,如果包含,则在我的数据框中创建一个新列并给出值1到该条目。
我尝试使用ifelse
函数,如下所示:
FinalData$RareDisease <- ifelse(rare_disease %in% FinalData$Disease,1,0)
但是我想这会检查两个变量中的对应行是否相同,因此会引发错误。相反,我希望对Disease
的每个单元格与rare_disease
的每个单个元素进行检查,如果有道理。
我也按照Test if a vector contains a given element的建议尝试了match
和is.element()
,但是它们也不起作用。
答案 0 :(得分:0)
您几乎是正确的,但您应该翻转它:
FinalData$RareDisease <- ifelse(rare_disease %in% FinalData$Disease,1,0)
答案 1 :(得分:0)
这是一个可重现的示例/解决方案-请注意,您可以只使用as.numeric
而不是ifelse
:
df <- data.frame(
idx = 1:10,
Disease = letters[1:10]
)
rare_disease <- letters[c(1, 5, 9)]
df
#> idx Disease
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e
#> 6 6 f
#> 7 7 g
#> 8 8 h
#> 9 9 i
#> 10 10 j
rare_disease
#> [1] "a" "e" "i"
df$RareDisease <- as.numeric(df$Disease %in% rare_disease)
df
#> idx Disease RareDisease
#> 1 1 a 1
#> 2 2 b 0
#> 3 3 c 0
#> 4 4 d 0
#> 5 5 e 1
#> 6 6 f 0
#> 7 7 g 0
#> 8 8 h 0
#> 9 9 i 1
#> 10 10 j 0
由reprex package(v0.2.1)于2019-04-30创建