我只想获得一组分组记录的主要价值。见下文
dat <- data.frame(ids = c(1,1,1,1,2,3,4,4))
dat$id <- 1:nrow(dat)
library(dplyr)
y <- tbl_df(dat) %>%
group_by(ids) %>%
mutate(next_id = lead(id, 1))
当你看到y
> str(y)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 8 obs. of 3 variables:
$ ids : num 1 1 1 1 2 3 4 4
$ id : int 1 2 3 4 5 6 7 8
$ next_id: int 2 3 4 NA NA NA 8 NA
- attr(*, "vars")=List of 1
..$ : symbol ids
- attr(*, "labels")='data.frame': 4 obs. of 1 variable:
..$ ids: num 1 2 3 4
..- attr(*, "vars")=List of 1
.. ..$ : symbol ids
..- attr(*, "drop")= logi TRUE
- attr(*, "indices")=List of 4
..$ : int 0 1 2 3
..$ : int 4
..$ : int 5
..$ : int 6 7
我所期待的只是一个简单的int
列,而不是嵌套的数据结构。
我确信我遗漏了一些明显的东西,但是我们将非常感谢任何帮助。
答案 0 :(得分:0)
Per @ David上面的评论,ungroup
是关键。
dat <- data.frame(ids = c(1,1,1,1,2,3,4,4))
dat$id <- 1:nrow(dat)
library(dplyr)
y <- tbl_df(dat) %>%
group_by(ids) %>%
ungroup %>%
mutate(next_id = lead(id, 1))
str(y)
> str(y)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 8 obs. of 3 variables:
$ ids : num 1 1 1 1 2 3 4 4
$ id : int 1 2 3 4 5 6 7 8
$ next_id: int 2 3 4 5 6 7 8 NA