【问题标题】:summarising multiple non-exclusive dummy variables in R into one variable将 R 中的多个非独占虚拟变量汇总为一个变量
【发布时间】:2011-05-31 19:53:18
【问题描述】:

我收到了一个包含多个虚拟变量和其他变量的数据集。基本上我想做的是用rms的summary.formula创建汇总表。但是,我不知道如何从多个虚拟变量中创建单个变量,并且它们不是互斥的。这是可能吗。当然我可以创建一个表格等,但是我不能使用 summary.formula 并且我希望 summary.formula 输出只包含虚拟变量的各个级别。

编辑: 澄清:a & b 需要总结,但它们并不相互排斥。由于每一行都记录了年龄,因此我需要将 a 和 b 汇总为一个变量,以便在 summary.formula 中使用。我已经编辑了下面的代码,以便将 0 和 1 分别更改为 NA 或 a,b。

我希望 summary.formula 输出是这样的:

h<-data.frame(a=sample(c("A",NA),100,replace=T),b=sample(c("B",NA),100,replace=T),age=rnorm(100,50,25),epo=sample(c("Y","N"),100,T))





library(rms)

summary.formula(epo~age####+summary variable of a & b######,method="reverse",data=h)



#-----------------
 Descriptive Statistics by epo

+---------+--------------------------+--------------------------+
|         |N                         |Y                         |
|         |(N=56)                    |(N=44)                    |
+---------+--------------------------+--------------------------+
|age      |31.53434/48.90788/67.69096|28.63689/43.93502/57.81834|
+---------+--------------------------+--------------------------+
|sab : A  |         25% (14)         |         16% ( 7)         |
+---------+--------------------------+--------------------------+
|   B     |         27% (15)         |         32% (14)         |
+---------+--------------------------+--------------------------+

【问题讨论】:

  • 有很多方法可以将二元变量组合成单个变量,但是如何操作取决于它们的含义以及您希望单个变量表示什么。如果您提供更多关于您希望单个变量的含义的详细信息,我们可能会提供帮助。

标签: r summary


【解决方案1】:

使用 paste() 似乎可以接受。

h$sab <- paste(h$a, h$b, sep="_")
summary.formula(epo~age+sab,method="reverse",data=h)
#-----------------
 Descriptive Statistics by epo

+---------+--------------------------+--------------------------+
|         |N                         |Y                         |
|         |(N=56)                    |(N=44)                    |
+---------+--------------------------+--------------------------+
|age      |31.53434/48.90788/67.69096|28.63689/43.93502/57.81834|
+---------+--------------------------+--------------------------+
|sab : 0_0|         25% (14)         |         16% ( 7)         |
+---------+--------------------------+--------------------------+
|    0_1  |         27% (15)         |         32% (14)         |
+---------+--------------------------+--------------------------+
|    1_0  |         25% (14)         |         34% (15)         |
+---------+--------------------------+--------------------------+
|    1_1  |         23% (13)         |         18% ( 8)         |
+---------+--------------------------+--------------------------+

另一个选项可能是interaction():

summary.formula(epo~age+interaction(a,b),method="reverse",data=h)

如果您希望对变量组合应用逻辑“或”,则使用:

h$a_or_b <- with(h, a|b)
summary.formula(epo ~ age+ h$a_or_b,method="reverse",data=h)

【讨论】:

  • 问题是 sab 变量应该只包含 a 或 b- 而不是 a_and_b、a_and_a 或 b_and_b.. 我只想通过 a 或 b 进行总结-它们并不相互排斥。
  • 我确信 Dwin 可以更新这个答案来轻松解决这个问题,但一种方法是创建一个新变量 h$c
  • @Misha:你需要弄清楚你想要什么。您对逻辑术语“或”和“和”的使用似乎很混乱。我绝不会使用“a_and_a”或“b_and_b”创建任何变量级别。创建的四个级别是 a=0&b=0、a=0%b=1、a=1&b=0 和 a=1&b=1。你只想要 max(a,b) 吗?
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 2018-03-22
  • 2020-08-02
  • 2016-10-21
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多