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 = "")