【发布时间】:2021-10-01 13:36:00
【问题描述】:
我有一个列表(包含 83 个数据框),并且想在整个列表中将其中一个变量(即 Mn,参见下面的“实践”df)乘以 10000。然后我想找到 Mn 的最大值(在每个数据帧内),然后保留这个值(最大值)和低于它的所有值(在每个数据帧内)。除了这些 Mn 值,我还想保留数据框中所有其他变量的相应值(即 Ba、Sr)。对于所有变量,我想从每个数据框中排除高于此点的所有值。一旦我完成了这个缩减,我想将 Mn 返回到它的初始值(即将 Mn 除以 10000)。
以下是练习脚本和我想要达到的目标(Mn 事先乘以 10000,然后再除以 10000)。任何帮助将不胜感激。
Ba <- c(1,1,1,2,2)
Sr <- c(1,1,1,2,2)
Mn <- c(1,1,2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 1
# 2 1 1 1
# 3 1 1 2
# 4 2 2 1
# 5 2 2 1
这就是我想在 R 中实现的目标:
Ba <- c(1,2,2)
Sr <- c(1,2,2)
Mn <- c(2,1,1)
df <- data.frame(Ba, Sr, Mn)
df
# Ba Sr Mn
# 1 1 1 2
# 2 2 2 1
# 3 2 2 1
我认为我的问题的过滤器部分的脚本是这样的:
MaxMn <- lapply(df, function(df){
df %>%
filter(cummax(invoke(pmax, cur_data())) == max(cur_data()))
})
【问题讨论】:
标签: r list filter multiplication divide