也许这是基本的东西,但我找不到答案。
我有
Id Year V1
1 2009 33
1 2010 67
1 2011 38
2 2009 45
3 2009 65
3 2010 74
4 2009 47
4 2010 51
4 2011 14
我只需要选择具有相同 Id 但在 2009 年、2010 年和 2011 年这三年中的行。
Id Year V1
1 2009 33
1 2010 67
1 2011 38
4 2009 47
4 2010 51
4 2011 14
I try
d1_3 <- subset(d1, Year==2009 |Year==2010 |Year==2011 )
但它不起作用。
谁能提供一些建议,告诉我如何在 R 中做到这一点?
I think ave
在这里可能有用。我将您的原始数据框称为“df”。对于每个 ID,检查年份 (2009:2011 %in% x
)。这给出了一个逻辑向量,它可以是sum
医学。测试总和是否等于 3(如果所有 Years 都存在,则总和为 3),这会生成一个新的逻辑向量,用于对数据帧的行进行子集化。
df[ave(df$Year, df$Id, FUN = function(x) sum(2009:2011 %in% x) == 3, ]
# Id Year V1
# 1 1 2009 33
# 2 1 2010 67
# 3 1 2011 38
# 7 4 2009 47
# 8 4 2010 51
# 9 4 2011 14
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)