A B C
1 2 3
4 2 3
1 2 3
我想比较row1与row2,row2与row3,以此类推rown与row1。 如果它们相同,我要在另一个数据框中将其打印为“相同”或“不同”
上表的输出:
A B C
Different same same
Different same same
same same same
对于下面的代码,我得到
输出为True或false。我要替换为Different and same。
compare = t(combn(nrow(Data.matrix),2,FUN=function(x)we2009[x[1],]==Data.matrix[x[2],]))
rownames(compare) = combn(nrow(Data.matrix),2,FUN=function(x)paste0("seq",x[1],"_seq",x[2]))
View(compare)
答案 0 :(得分:1)
有很多方法可以做到这一点,
由于您添加了MySQL标签,最简单的方法是在列数有限的情况下使用sql进行操作,因此您也可以在r中使用包SQL
library(sqldf)
sqldf('select
case when a=b then 'same' else 'different' as a
case when b=c then 'same' else 'different' as b
case when c=a then 'same' else 'different' as c
from my_dataset'
答案 1 :(得分:0)
这能达到预期的结果吗?
data_test = data.frame(A = c(1,4,1), B = c(2,2,2), C = c(3,3,3))
# create shifted helper-columns
data_test_help = cbind(data_test, data_test[c(2:NROW(data_test), 1),])
# apply comparision on each row
t(apply(data_test_help,1, function(f) f[1:3] == f[4:6]))
# for same, different notation instead of true false
t(apply(data_test_help,1, function(f) ifelse(f[1:3] == f[4:6], "same", "Different")))