【发布时间】:2021-06-18 09:39:13
【问题描述】:
df = data.frame( ID = c (1,2,3,4,5), a = c (0,2,0,1,0),
b = c (0,3,2,NA,0), c = c(0,4,NA,NA,1),
d = c (2,5,4,NA,1))
maxn <- function(n) function(x) order(x, decreasing = TRUE)[n]
df<-df %>% mutate( second_largest=apply(.[2:5], 1, function(x) names(x)[maxn(2)(x)]) )
我使用上面的 R 代码来获取 a,b,c,d 的第二大值的列名。对于 ID=4,由于 b,c,d 存在缺失值,因此第二大值的名称应为 NA。但是,代码返回 b。我应该如何删除缺失值?
【问题讨论】:
-
如果有两个
1s和两个0s怎么办? -
我会从左到右选择
-
那你的选择是什么?在两个
1s 之间,您最多取一个取第二大取一个,还是不取两个取最大值? -
如果第 1 列和第 2 列都有两个 1,则最大的应该是第 2 列,第二大的应该是第 1 列。左侧变量将是较小的变量。谢谢。