如何在R中对数据帧的最后一个值进行子集化?
我有一个大数据框,它的基本形式看起来像这样......
subject session
1 1
2 1
3 1
1 2
2 2
3 2
1 3
2 3
3 3
1 4
2 4
3 4
1 5
2 5
3 5
如何仅对数据框的最后 2 个会话(即会话 4 和 5)进行子集化?
注意:会话总数可能会因场景而异,但我总是只想查看最后 2 个会话。
所以像这样的代码不足以满足所有场景......
data <- subset(data, session == c(4,5))
回答
对于多个元素,请使用%in%代替==。获取unique“会话”值并使用 返回最后两个值tail,创建%in%用于子集的逻辑表达式
subset(data, session %in% tail(unique(session), 2))
正如@Greg 在评论中提到的,如果它应该基于有序的“会话”并且列值未排序,则在应用之前sort对unique元素执行tail
subset(data, session %in% tail(sort(unique(session)), 2))