给定这样的数据框:
COUNTRY CITIZENS SURFACE
A 20000000 40
A 80000000 78
B 3000000 120
B 200000 27
C 10000000 56
A 5600000 20
C 10000000 30
B 2500000 20
我想用对应于每个国家/地区公民的最大值的行来对数据框进行子集化。
我可以使用dplyr来获得每个国家/地区的“公民”最大值,并进行汇总,但是我无法为每个最大值提取相应的表面值。
你知道我怎么能做到吗?
slice
按“ COUNTRY”分组后,我们可以使用
library(dplyr)
df1 %>%
group_by(COUNTRY) %>%
slice(which.max(CITIZENS))
或搭配 filter
df1 %>%
group_by(COUNTRY) %>%
filter(CITIZENS == max(CITIZENS))
或搭配 data.table
library(data.table)
setDT(df1)[, .SD[CITIZENS == max(CITIZENS)], COUNTRY]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句