我有一个很大的数据框,它的基本形式是这样的…
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)进行子集?
注意:会话总数在不同场景之间可能会有所不同,但我始终只想查看最后两个会话。
所以像这样的代码并不能满足所有的场景。
data <- subset(data, session == c(4,5))发布于 2021-07-02 02:52:23
对于多个元素,请使用%in%而不是==。使用tail获取会话‘unique’值并返回后两个值,使用%in%创建逻辑表达式以进行子集设置
subset(data, session %in% tail(unique(session), 2))正如@Greg在注释中提到的,如果它应该基于已排序的'session‘,并且列值没有排序,那么在应用tail之前对unique元素执行sort
subset(data, session %in% tail(sort(unique(session)), 2))发布于 2021-07-02 04:25:06
下面是另一个基本R选项
> subset(df, session >= sort(unique(session), decreasing = TRUE)[2])
subject session
10 1 4
11 2 4
12 3 4
13 1 5
14 2 5
15 3 5或
> subset(df, session >= -sort(-unique(session))[2])
subject session
10 1 4
11 2 4
12 3 4
13 1 5
14 2 5
15 3 5https://stackoverflow.com/questions/68215539
复制相似问题