我对R还比较陌生,不知道如何做到这一点。这里有一个类似的链接,我认为:
R-比较列中的值,并使用此比较的结果创建一个新列。有比循环更好的方法吗?
如何使用R将列中的值与上一个值进行比较?
比较列并使用R 查找列的唯一值
Row G1 M1 M2 M3 CompareColumn
1 2 2 2 2 None
2 1 2 2 2 G1
3 1 2 2 2 G1
4 1 3 3 3 G1
5 3 2 1 3 G1, M1
6 3 1 1 1 G1
7 2 2 2 2 None
8 2 2 2 2 None
9 1 2 3 1 G1, M2
10 2 2 3 2 M2
我想将G1、M1和M2的值与M3进行比较。如果其中任何列与M3不同,则在CompareColumn中,打印不同列的名称。
以下是一些可能有帮助的伪代码:
for each column in row
{
if value in column != M3
{
df$CompareColumn = column.name
##when there's already a name, add ", " + column.name
}
else
{
df$CompareColumn = None
}
}
将想法直接翻译成代码,这可能会有所帮助:
a$CompareColumn <- apply(a[, 2:4] != a[, 5], 1, function(x) ifelse(any(x), paste(colnames(a)[2:4][x], collapse=', '), 'None'))
不过,必须有一些更好的解决方案。