我在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
答案 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