我有一个包含3列的数据框,
我想将具有较大值的2列合并为具有总和的一列。
只要无法合并,函数就会抛出错误。 (例如:在较小的值0.3,0.3,0.4 上存在平局时)
E.g
|A| |B| |C|
0.5 0.3 0.2
0.1 0.7 0.2
0.4 0.4 0.2
结果数据框:
|X| |Y|
0.8 0.2 #(x=0.5 + 0.3)
0.9 0.1 #(x=0.7 + 0.2)
0.8 0.2 #(x=0.4 + 0.4)
提前感谢您的帮助
的更新
如果有人遇到同样的问题,我使用了:
apply(dt, 1, function(x) which(x==min(x)))
查找数据框中是否有2个相同的最小值
答案 0 :(得分:3)
dt$something <- dt$A + dt$B + dt$C - pmin(dt$A,dt$B,dt$C)
使用data.table
dt <- data.table(dt)
dt[,something := A + B + C - pmin(A,B,C) ]
dt[A==B | B ==C | C==A,something := NA]
答案 1 :(得分:1)
也许这样的事情会让你开始:
t(apply(mydf, 1, function(x) {a <- sort(x); c(sum(a[2:3]), a[1])}))
# [,1] [,2]
# [1,] 0.8 0.2
# [2,] 0.9 0.1
# [3,] 0.8 0.2
但您需要添加其他条件。