我在R中有一个下面提到的数据帧。
ID Seq Value
ID-1 10,055 25
ID-1 10,054 20
ID-1 10,053 45
ID-1 10,052 61
ID-1 10,051 23
ID-2 35,075 19
ID-2 35,074 54
ID-2 35,073 32
ID-2 35,072 77我想对数据帧进行切片,并仅获取每个ID之前的最新值基础Seq。
所需DF<-
ID Seq Value
ID-1 10,054 20
ID-2 35,074 54发布于 2021-03-01 13:06:46
如果您的数据已经按降序排序,则可以从每个ID中获取第二行。
library(dplyr)
df %>% group_by(ID) %>% slice(2)
# ID Seq Value
# <chr> <chr> <int>
#1 ID-1 10,054 20
#2 ID-2 35,074 54如果不是,将Seq更改为number,对数据进行排序,然后提取第二行。
df %>%
mutate(Seq = readr::parse_number(Seq)) %>%
arrange(ID, desc(Seq)) %>%
group_by(ID) %>%
slice(2)发布于 2021-03-02 07:39:17
使用‘ave`的基础R选项
> subset(df, ave(1:nrow(df), ID, FUN = seq_along) == 2)
ID Seq Value
2 ID-1 10,054 20
7 ID-2 35,074 54发布于 2021-03-02 01:33:58
我们也可以做
library(dplyr)
df %>%
group_by(ID) %>%
filter(row_number() == 2)https://stackoverflow.com/questions/66416896
复制相似问题