1

我有一个包含 3 列的数据框,
我想将具有较大值的 2 列与总和合并为一列。
只要无法进行合并,函数就应该抛出错误。(例如:当较小的值 0.3,0.3,0.4 出现平局时

例如

|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 个相同的最小值

4

2 回答 2

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]
于 2013-10-23T05:03:42.437 回答
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

不过,您需要添加其他条件。

于 2013-10-23T05:05:48.690 回答