有一个data.frame,df如下
id | name | value
1 | team1 | 3
1 | team2 | 1
2 | team1 | 1
2 | team2 | 4
3 | team1 | 0
3 | team2 | 6
4 | team1 | 1
4 | team2 | 2
5 | team1 | 3
5 | team2 | 0
我们如何对数据帧进行子集化以获取所有id值为2:4的行?
我们可以像df[,df$id >= 2 & df$id <= 4]
那样有条件地申请。但有没有办法直接使用像ids <- c(2:4)
这样的整数范围向量来对数据帧进行子集化?
执行此操作的一种方法是df[,df$id >= min(ids) & df$id <= max(ids)]
。
有更优雅的R方式吗?
答案 0 :(得分:2)
已经提到了最典型的方式,但使用match
with(df, df[match(id, 2:4, F) > 0, ])
或类似的
with(df, df[is.element(id, 2:4), ])