R 在列中按组填写整数范围

R 在列中按组填写整数范围,r,R,这个例子不言自明。我在一列中有一个年份范围,我不知道如何扩展它,使它包括每个单独的年份。欢迎所有r变体的解决方案 库(dplyr) #>正在附加包:“dplyr” #>以下对象已从“package:stats”屏蔽: #> #>滤波器,滞后 #>以下对象已从“package:base”屏蔽: #> #>相交、setdiff、setequal、并集 图书馆(tidyr) ##如果我有这样一个data.frame: foo通过添加tidyr,您可以执行以下操作: foo %>% grou

这个例子不言自明。我在一列中有一个年份范围,我不知道如何扩展它,使它包括每个单独的年份。欢迎所有r变体的解决方案

库(dplyr)
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集
图书馆(tidyr)
##如果我有这样一个data.frame:

foo通过添加
tidyr
,您可以执行以下操作:

foo %>%
 group_by(id) %>%
 summarise(year = list(seq(min(year), max(year), 1))) %>%
 unnest()

     id  year
  <dbl> <dbl>
1     1  2011
2     1  2012
3     1  2013
4     2  2009
5     2  2010
6     2  2011

通过添加
tidyr
,您可以执行以下操作:

foo %>%
 group_by(id) %>%
 summarise(year = list(seq(min(year), max(year), 1))) %>%
 unnest()

     id  year
  <dbl> <dbl>
1     1  2011
2     1  2012
3     1  2013
4     2  2009
5     2  2010
6     2  2011
以下是一个(主要)基本的R解决方案:

ids <- unique(foo$id)

l <- foo %>% 
  split(foo$id) %>% 
  lapply(function(x) seq(min(x$year), max(x$year)))

for(i in 1:length(l)){
  l[[i]] <- data.frame(year = l[[i]])
  l[[i]]$id <- ids[i]
}

dplyr::bind_rows(l)

  year id
1 2011  1
2 2012  1
3 2013  1
4 2009  2
5 2010  2
6 2011  2
ids%
lapply(功能(x)顺序(最小值(x$年)、最大值(x$年)))
用于(1中的i:长度(l)){
l[[i]]这里有一个(大部分)基本的R解决方案:

ids <- unique(foo$id)

l <- foo %>% 
  split(foo$id) %>% 
  lapply(function(x) seq(min(x$year), max(x$year)))

for(i in 1:length(l)){
  l[[i]] <- data.frame(year = l[[i]])
  l[[i]]$id <- ids[i]
}

dplyr::bind_rows(l)

  year id
1 2011  1
2 2012  1
3 2013  1
4 2009  2
5 2010  2
6 2011  2
ids%
lapply(功能(x)顺序(最小值(x$年)、最大值(x$年)))
用于(1中的i:长度(l)){
l[[i]]