首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R Dataframe中获取以前的最新行

如何在R Dataframe中获取以前的最新行
EN

Stack Overflow用户
提问于 2021-03-01 13:02:38
回答 3查看 47关注 0票数 0

我在R中有一个下面提到的数据帧。

代码语言:javascript
复制
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<-

代码语言:javascript
复制
ID      Seq      Value
ID-1   10,054     20
ID-2   35,074     54
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-01 13:06:46

如果您的数据已经按降序排序,则可以从每个ID中获取第二行。

代码语言:javascript
复制
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,对数据进行排序,然后提取第二行。

代码语言:javascript
复制
df %>%
  mutate(Seq = readr::parse_number(Seq)) %>%
  arrange(ID, desc(Seq)) %>%
  group_by(ID) %>%
  slice(2)
票数 2
EN

Stack Overflow用户

发布于 2021-03-02 07:39:17

使用‘ave`的基础R选项

代码语言:javascript
复制
> 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
票数 2
EN

Stack Overflow用户

发布于 2021-03-02 01:33:58

我们也可以做

代码语言:javascript
复制
library(dplyr)
df %>%
    group_by(ID) %>%
    filter(row_number() == 2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66416896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档