我想创建一个专栏,用来说明病人是否有抑郁症的共同诊断。问题是,诊断可以记录在以下四栏之一:
我一直在用
levels(dataframe$ynDepression)[levels(dataframe$ComorbidDiagnosis)=="Depression"]<-"Yes"对于所有4列,但我不知道如何编码那些在任何列中没有诊断的人。我试过:
levels(dataframe$ynDepression)[levels(dataframe$DischOtherDiagnosis &
dataframe$OtherDiagnosis &
dataframe$ComorbidDiagnosis &
dataframe$DischComorbidDiagnosis)==""]<-"No"我也尝试使用&&但是它没有起作用。我是不是遗漏了什么?提前感谢!
编辑:我试着上传一些示例数据的图片,但我还没有足够的声誉来上传图片。我将尝试在这里举一个例子,但可能行不通:
病人ID PrimaryDiagnosis OtherDiagnosis ComorbidDiagnosis
发布于 2014-12-05 14:54:22
[]内部的内容必须是(可转换的)布尔值,才能使子集工作。例如:
x<-1:5
x[x>3]
#4 5
x>3
# F F F T T工作是因为条件是布尔向量。有时,布尔函数可以是含蓄的,就像在dataframe[,"var"]中,意思是dataframe[,colnames(dataframe)=="var"],但是R必须能够以某种方式使它成为布尔值。
编辑:,正如beginneR所指出的,您也可以使用类似于
df[,c(1,3)]的内容进行子集,这是数字的,但与df[,"var"]的工作方式相同。我喜欢将这种子集看作是隐式布尔值,因为它允许选择是/否,但您很可能不同意,并且只考虑它们使R能够选择列和行。
在这种情况下,使用的条件无效(例如,dataframe$OtherDiagnosis)。
您需要类似于rowSums(df[,c("var1","var2","var3")]=="")==3的东西,这是一个有效的条件。
https://stackoverflow.com/questions/27316844
复制相似问题