相关疑难解决方法(0)

查找列号并连续计算第二个最高值

我正在尝试编写一些代码,用于标识每行的最大两个值,并提供其列号和值.

df = data.frame( car = c (2,1,1,1,0), bus = c (0,2,0,1,0),
                 walk = c (0,3,2,0,0), bike = c(0,4,0,0,1))
Run Code Online (Sandbox Code Playgroud)

我已经设法使用maxmax.col函数来实现最大值.

df$max = max.col(df,ties.method="first")
df$val = apply(df[ ,1:4], 1, max)
Run Code Online (Sandbox Code Playgroud)

据我所知,第二个值没有相应的函数,所以这样做会让事情变得有点棘手.使用此代码提供第二高的值,但(重要的是)不提供有关系的情况.它看起来也很危险.

sec.fun <- function (x) {
  max( x[x!=max(x)] )
}

df$val2 <- apply(df[ ,1:4], 1, sec.fun)
Run Code Online (Sandbox Code Playgroud)

理想情况下,该解决方案不会涉及删除任何原始数据,并且可用于查找第三,第四......最高值,但这些都不是基本要求.

r plyr dataframe

6
推荐指数
1
解决办法
7842
查看次数

标签 统计

dataframe ×1

plyr ×1

r ×1