誰でも助けてくれますか。多くの列の値を 1 つの列と比較したい。いずれかの列の値が標準列の値よりも大きい場合は、新しい列に 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)