R数据帧中的条件行删除

时间:2015-05-28 18:31:28

标签: r subset

以下是一个示例数据框:

df <- data.frame(t1 = c(1,2,3,4), t2 = c(7,3,8,1), t3 = c(1,1,1,1))

df
  t1 t2 t3
1  1  7  1
2  2  3  1
3  3  8  1
4  4  1  1

我的目标是从每列中删除最大值。但是,对于像t3这样的列,列中的所有值都相等,我只需删除一个值,这样数据框中的所有三列最终都会有三行,如下所示:

df2
  t1 t2 t3
1  1  7  1
2  2  3  1
3  3  1  1

2 个答案:

答案 0 :(得分:4)

如果只使用which.max,那么只选择一个值(即第一次出现的最大值的索引):

as.data.frame(lapply(df, function(x) x[-which.max(x)]))
#   t1 t2 t3
# 1  1  7  1
# 2  2  3  1
# 3  3  1  1

答案 1 :(得分:4)

尝试

library(data.table)
 setDT(df)[, lapply(.SD, function(x) x[-which.max(x)])]