首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:使用来自多列的数据创建因子

R:使用来自多列的数据创建因子
EN

Stack Overflow用户
提问于 2014-12-05 13:19:42
回答 1查看 175关注 0票数 0

我想创建一个专栏,用来说明病人是否有抑郁症的共同诊断。问题是,诊断可以记录在以下四栏之一:

  • ComorbidDiagnosis;
  • OtherDiagnosis;
  • DischargeDiagnosis;
  • OtherDischargeDiagnosis。

我一直在用

代码语言:javascript
复制
levels(dataframe$ynDepression)[levels(dataframe$ComorbidDiagnosis)=="Depression"]<-"Yes"

对于所有4列,但我不知道如何编码那些在任何列中没有诊断的人。我试过:

代码语言:javascript
复制
levels(dataframe$ynDepression)[levels(dataframe$DischOtherDiagnosis &
   dataframe$OtherDiagnosis & 
   dataframe$ComorbidDiagnosis & 
   dataframe$DischComorbidDiagnosis)==""]<-"No"

我也尝试使用&&但是它没有起作用。我是不是遗漏了什么?提前感谢!

编辑:我试着上传一些示例数据的图片,但我还没有足够的声誉来上传图片。我将尝试在这里举一个例子,但可能行不通:

病人ID PrimaryDiagnosis OtherDiagnosis ComorbidDiagnosis

  1. _________AN__________Depression
  2. _________AN
  3. _________AN__________Depression______PTSD
  4. _________AN_________________________Depression
EN

回答 1

Stack Overflow用户

发布于 2014-12-05 14:54:22

[]内部的内容必须是(可转换的)布尔值,才能使子集工作。例如:

代码语言:javascript
复制
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的东西,这是一个有效的条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27316844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档