R 数据框中的条件行删除
Conditional row removal in an R data frame
这是一个示例数据框:
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
只使用 which.max
怎么样,因为那样 select 只有一个值(即第一次出现最大值的索引):
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
尝试
library(data.table)
setDT(df)[, lapply(.SD, function(x) x[-which.max(x)])]
这是一个示例数据框:
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
只使用 which.max
怎么样,因为那样 select 只有一个值(即第一次出现最大值的索引):
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
尝试
library(data.table)
setDT(df)[, lapply(.SD, function(x) x[-which.max(x)])]