谁能帮忙。我想将多列的值与一列进行比较。如果任何一列的标准列值大于在新列中放入 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)