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