【发布时间】:2021-06-19 08:51:17
【问题描述】:
我有数百个名称和每个名称数百个值的数据框。现在我想根据仅适用于数据的某个子集的一些数学规则过滤一些值。一个简化的示例将过滤每个名称的最大值。
我可以如下所示对其进行硬编码,但希望避免使用它。
library(dplyr)
##
names <- c('A', 'A', 'B', 'B')
values <- c(1,2,3,4)
df <- data.frame(names, values)
##
df%>%filter(names!='A' | values!=max(subset(df, names =='A')$values)
,names!='B' | values!=max(subset(df, names =='B')$values))
期望的输出:
names values
1 A 1
2 B 3
我会考虑在 dplyr 过滤器中创建一个循环,计算每个名称的最大值,然后在可能的情况下在过滤器中应用这两个条件。
【问题讨论】:
标签: r loops filter dynamic dplyr