任何人都可以提供帮助。我想比较多列的值和一列。如果任何列的值与标准列的值相比大于在新列中放置1,否则将为0。 我有很多文件,所以我想在循环中使用它。
df:
Names Standard Das Dss Tri Tet
Aa 32 42 21 45 34
Ab 23 25 43 43 32
Ac 43 34 23 32 23
Ad 23 24 33 12 23
Ae 14 24 12 20 24
Af 43 42 13 12 43
Ag 12 13 22 13 22
Ah 32 32 42 42 23
输出:
Names Standard Das Dss Tri Tet Difference No_Difference Names_Difference Total
Aa 32 42 21 45 34 15 3 Das, Tri, Tet 1
Ab 23 25 43 43 32 52 4 Das,Dss,Tri,Tet 1
Ac 43 34 23 32 23 0 0 NA 0
Ad 23 24 33 12 23 10 2 Das,Dss 1
Ae 14 24 12 20 24 26 4 Das,Tri,Tet 1
Af 43 42 13 12 43 0 0 NA 0
Ag 12 13 22 13 22 22 4 Das,Dss,Tri,Tet 1
Ah 32 32 42 42 23 20 2 Dss,Tri 1
我正在使用@adibender提供的代码:
df2 <- do.call(rbind, apply(df[, -1], 1, function(z) {
ind <- z[2:5] > z[1]
return(cbind.data.frame( Total= if(z[2:5]>z[1]{'1'} else {'0'},
Difference = sum(z[2:5][ind] - z[1]),
No_Difference = sum(ind),
Names_Difference = paste(colnames(df[3:6])[ind],
collapse = ", ")
))
}))
df <- cbind(df, df2)
答案 0 :(得分:1)
我不确定你要查找的是什么,但是以下命令会在数据框中添加一个新列Total
,指示行中的任何值是否高于{{1}中的值}:
Standard
然后结果:
transform(df, Total = as.integer(apply(df[-(1:2)], 1, max) > Standard))