参考: 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))