R:排序行,查询它们并将结果添加为列

时间:2016-02-24 19:49:18

标签: r sorting dataframe

我有一个R数据帧,其尺寸为32 x 11.对于每一行,我想确定最高值,第二高和第三高值,并将这些值作为额外列添加到初始数据帧(32 x 14)。提前谢谢了!

library(car)
data(mtcars)
mtcars

1 个答案:

答案 0 :(得分:1)

首先,创建一个函数来获得向量的第n个最高值。然后,创建数据框的副本,因为第二个最高值可能会随着您添加更多列而更改。然后使用apply和1应用您的函数以按行操作。我不确定如果数据中有NA,会发生什么。我还没有测试过它......

像这样......

nth_highest <- function(x, n)sort(x, decreasing=TRUE)[n]
tmp <- mtcars
mtcars$highest <- apply(tmp, 1, function(x)nth_highest(x,1))
mtcars$second_highest <- apply(tmp, 1, function(x)nth_highest(x,2))
mtcars$third_highest <- apply(tmp, 1, function(x)nth_highest(x,3))
rm(tmp)