根据现有值

时间:2016-03-30 19:31:25

标签: r

参考: Transpose and create categorical values in R

此问题的后续行动。虽然model.matrix和data.table都可以很好地处理其中的值,但我们如何使用它们来模拟列?

含义,来自同一数据框中的数据,

    data <- read.table(header=T, text='
          subject weight sex  test 
          1       2      M     control 
          2       3      F     cond1  
          3       2      F     cond2  
          4       4      M    control
          5       3      F    control
          6       2      F    control
           ')

如果我用R中的SQL模拟OR语句的case语句,我该怎么办呢?在SQL中我会这样做:

case when ( sex = 'F' OR sex = 'M')  AND CONTROL IS NOT NULL THEN 1 ELSE 0 AS F_M_CONTROL
case when (sex = 'F' OR sex = 'M') AND COND1 IS NOT NULL THEN 1 ELSE 0 AS F_M_COND1

将输出带到:

subject      weight control_F_M control_M condtrol_F cond1_F_M cond1_F cond1_M
           1       2        0        1          0      0      0        0
           2       3        0        0          1      0      0        0
           3       2        0        0          0      0      1        0
           4       4        0        1          0      0      0        0
           5       3        1        0          0      0      0        0
           6       2        1        0          0      0      0        0

知道如何生成&#34; Control_F_M&#34; R?

中的Cond1_F_M列和

提前致谢, 蜂

编辑:

为了产生上述输出,我使用数据表&amp; amp; dcast如前所述。

如果我知道列中的所有值,我可以使用If-Else:test。我为之前没有澄清这一点而道歉。课程的挑战是该列是动态的,因此我希望动态生成那么多列作为下面的扩展或使用类似的方法。

           dcast(data, subject+weight~test+sex, fun=length, drop=c(TRUE,FALSE))

0 个答案:

没有答案