我对R很陌生,用R语言做条件方面的工作。我有一张这样的数据:
ID nb
11 1
11 2
11 3
24 1
24 2
32 1
41 1
41 2对于每个不同的ID,我想对其中nb = max(nb)的行进行子集,因此获得以下新数据:
ID nb
11 3
24 2
32 1
41 2如果可能的话,有没有一种不用循环就能做到这一点的方法?
谢谢你的帮助
发布于 2020-05-13 14:52:54
请查看tidyverse函数系列,它允许您非常轻松地执行此操作!它们是需要熟悉的非常有用的功能。(特别是,如果您知道核心dplyr函数,那么您可以在R中完成大部分需要做的事情。)
data %>%
group_by(ID) %>%
filter(nb == max(nb)) %>%
ungroup()发布于 2020-05-13 14:52:04
您可以将aggregate与max和merge结合使用
merge(x, aggregate(nb~ID, x, max))
# ID nb
#1 11 3
#2 24 2
#3 32 1
#4 41 2https://stackoverflow.com/questions/61777750
复制相似问题