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

R 将不同列中的值分组为一列,r,R,我在谷歌上搜索了几个小时的解决方案,如果它是简单的单行代码,而我错过了,我真诚地道歉。我基本上想把每一行不同列中相同的值组合在一起 根据毛里塔尼亚的建议提供样本数据 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

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

根据毛里塔尼亚的建议提供样本数据

       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

这就是你想要的吗

说明:我们使用
apply(df,1,…)
逐行处理
df
,然后使用%中的
%来标记该行中是否存在任何
值。然后将生成的逻辑向量(如
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

值不清楚。为什么预期输出中只有三行?发布数据的屏幕截图是没有用的。请参阅如何给出可复制的最小示例,包括样本数据和预期输出。另外,请看如何在SO上提出一个好问题。@Maurits你好,Maurits,只是为了解释我希望新专栏的样子。请花一两分钟浏览我在第一次评论中给出的链接;然后回来修改你的问题;您需要提供示例数据(使用
dput
),清楚地解释您想要做什么,并显示您的预期输出。@我们非常感谢您的指导,重新组织了数据,刚刚学习了一个新功能。您想做什么还不清楚。如何获取
列_211
列_114
中的值?为什么只有五排?为什么只有值
211
114
?您是只在一个
事件
列中查找相同的值,还是在所有列中查找相同的值?其他值呢,例如,
118
event_5
中重复?就是这样!非常感谢你,我现在将试着去理解它的逻辑。不用担心@Efe。很乐意帮忙。我添加了一些可能会有所帮助的解释。
 df <- read.delim(text =
     "  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                      ", 
 header = T, row.names = 1, sep = "")