r - 在R中按组条件进行子集化
问题描述
我有一个看起来有点像这样的数据集
id year
1 2012
1 2014
1 2015
2 2014
2 2018
2 2019
3 2011
4 2010
我只想根据这两个条件(1)每个 id 进行一次观察,(2)该 id 的最新年份。因此,例如,对于 id 1,我只想要 2015 行,对于 id 2,我只想要 2019 行,对于 id 3 和 4,我在这两年中只有一个观察结果,所以只保留它们。
我尝试了一些不同的方法,例如:
df1<-subset(df, interaction(df$id, max(df$year)))
我知道这个子集没有意义,但我只是在编造一些东西,希望在我的脑海中有些东西是有意义的。我试过的另一个,
lapply(unique(df$id), function(max) subset(df, mac(year)))
但我不断收到错误。
任何帮助将不胜感激!先感谢您。
解决方案
您应该分组然后过滤
df %>%
group_by(id) %>%
filter(year == max(year)) %>%
ungroup()
与@akrun 提出的切片解决方案不同,这将返回每个 id 的年份为最大值的所有行。这取决于您的需求。
推荐阅读
- shell - 获得 -f Linux 标志的定义比预期的更难
- php - 如何编码数据数组并保存到数据透视表 laravel
- javascript - Angular 创建相同组件的另一个实例,而不是更新现有的
- java - 构造函数链。为什么要在 this() 中初始化一个参数
- javascript - jQuery.ajax - 用新值更新表格单元格
- git - 自特定提交以来的 git 浅克隆
- javascript - Chrome 扩展 JS/JQuery
- python - Python nltk 词干分析器从不删除前缀
- c# - 我想发表评论,让我在 c# 中找到不同的代码块
- c++ - 调用链接器时是否可以强制 CMake 重新排序参数?