我在R中有一个数据框,大约有7k行。
Customer ID Test_Control DF Purchase
1112223333 test ab False
2222223333 Control ab False
3332223333 Control ab True
4442223333 test ab False
关于数据:
我需要将其转换为如下所示:
Test Control
0 1
0 1
1 0
0 1
关于转型:
基本上,我正在准备这个t.test()。
答案 0 :(得分:1)
使用reshape2库,可以保持与原始数据的链接:
library(reshape2)
df <- data.frame(Customer.ID = c(1112223333, 2222223333, 3332223333, 4442223333),
Test_Control = c("test", "Control", "Control", "test"),
DF = rep("ab", 4),
Purchase = c(FALSE, FALSE, TRUE, FALSE))
#Add dummy column with the desire result
df$result<-1
#cast the data frame
dcast(df, Customer.ID + Purchase + DF ~ Test_Control, fill=0)
答案 1 :(得分:0)
您可以使用ifelse
。对于每个变量,它会检查Purchase
是否为false,在这种情况下,它会指定值0.否则,它会检查Test_Control
的值以确定是分配1还是0。
df <- data.frame(Customer.ID = c(1112223333, 2222223333, 3332223333, 4442223333),
Test_Control = c("test", "Control", "Control", "test"),
DF = rep("ab", 4),
Purchase = c(FALSE, FALSE, TRUE, FALSE))
df$Test <- ifelse(!df$Purchase, 0, ifelse(df$Test_Control=="test", 1, 0))
df$Control <- ifelse(!df$Purchase, 0, ifelse(df$Test_Control=="Control", 1, 0))