我想创建一个列,用于编码患者是否患有抑郁症的合并症。问题是,诊断可以记录在4列之一中:
我一直在使用
levels(dataframe$ynDepression)[levels(dataframe$ComorbidDiagnosis)=="Depression"]<-"Yes"
对于所有4列但我不知道如何编码那些在任何列中没有诊断的人。我试过了:
levels(dataframe$ynDepression)[levels(dataframe$DischOtherDiagnosis &
dataframe$OtherDiagnosis &
dataframe$ComorbidDiagnosis &
dataframe$DischComorbidDiagnosis)==""]<-"No"
我也试过使用&amp;&amp;相反,但它没有奏效。我错过了什么吗? 提前谢谢!
编辑:我尝试上传一些示例数据的图片,但我还没有足够的声誉来上传图片。我会试着在这里举一个例子,但可能不起作用:
患者ID原发性诊断其他诊断合并症诊断
答案 0 :(得分:0)
[]
内的内容必须(可转换为)布尔值才能使子集工作。例如:
x<-1:5
x[x>3]
#4 5
x>3
# F F F T T
有效,因为条件是布尔向量。有时,booleanship可能是隐含的,就像在dataframe[,"var"]
中意味着dataframe[,colnames(dataframe)=="var"]
,但R必须能够以某种方式使它成为布尔值。
编辑:正如beginneR所指出的,您还可以使用类似
df[,c(1,3)]
的内容进行子集,这是df[,"var"]
,但与dataframe$OtherDiagnosis
的工作方式相同。我喜欢将这种子集视为隐式布尔值,因为它支持是/否选择,但您可能不同意,只考虑它们使R能够选择列和行。
在您的情况下,您使用的条件无效(例如rowSums(df[,c("var1","var2","var3")]=="")==3
)。
你需要像{{1}}这样的东西,这是一个有效的条件。