将不同列中的值分组为一列

时间:2017-12-07 23:30:41

标签: r

我在Google上搜索了几个小时的解决方案,如果它的简单的一行代码而我错过了,我真诚地道歉。我基本上想要在这里的每一行的不同列中将相同的值组合在一起;

按照Maurits的样本数据'建议

       event_1 event_2 event_3 event_4 event_5 event_6 event_7 event_8 event_9 event_10
seq_1      200     211     114     117     118     146                                 
seq_2      200     211     114     117     118     146                                 
seq_3      200     243     211     101     114     117     118     146                 
seq_4      200     211     114     117     118     146                                 
seq_5      200     243     211     101     114     117     118     146                      

这样的预期输出;

           Column_211      Column_101
seq_1             1         0
seq_2             1         0
seq_3             1         1
seq_4             1         0
seq_5             1         1

1 个答案:

答案 0 :(得分:0)

这就是你要追求的吗?

说明:我们使用df2 <- "V1 V2 21140 -2 3878 2 20434 -1" 逐行处理apply(df, 1, ...),然后使用df标记该行中是否存在%in%。然后将得到的逻辑向量(如values)转换为数字向量(如c(TRUE, FALSE))。最后,我们需要使用c(1, 0)转置结果矩阵,并根据您的预期结果给出列名。

t(...)

样本数据

 values <- c(211, 101);
 df.new <- t(apply(df, 1, function(x) as.numeric(values %in% x)));
 colnames(df.new) <- paste0("Column_", values);
 df.new;
 #      Column_211 Column_101
 #seq_1          1          0
 #seq_2          1          0
 #seq_3          1          1
 #seq_4          1          0
 #seq_5          1          1