如何在R中重复观察n次?

VLa*_*sen 3 r repeat dplyr

我正在尝试将一个变量记录到一个年度数据集中,该变量每单位记录一次。虽然重复观察n次非常简单,但是我很难为观察分配数年。

我的数据结构如下:

id startyear endyear dummy
1  1946      2005    1
2  1957      2005    1
3  1982      2005    1
4  1973      2005    1
Run Code Online (Sandbox Code Playgroud)

我想做的是创建一个名为的新行years,该行重复1 n = 2005 - 1946 = 59次;单位2 2005-1957次,以此类推并指定年份,从而产生以下输出:

id startyear endyear dummy year
1  1946      2005    1     1946
1  1946      2005    1     1947
1  1946      2005    1     1948
1  1946      2005    1     1949
[…]
Run Code Online (Sandbox Code Playgroud)

我试图使用slicemutate在dplyr,结合repseq,但没有给我我想要的结果。任何帮助将不胜感激。

akr*_*run 6

我们可以用来map2为每个元素创建一个从“开始年”到“结束年”的序列list,然后unnest

library(tidyverse)
df1 %>% 
    mutate(year = map2(startyear, endyear, `:`)) %>%
    unnest
# id startyear endyear dummy year
#1    1      1946    2005     1 1946
#2    1      1946    2005     1 1947
#3    1      1946    2005     1 1948
#4    1      1946    2005     1 1949
#5    1      1946    2005     1 1950
#6    1      1946    2005     1 1951
#7    1      1946    2005     1 1952
#...
Run Code Online (Sandbox Code Playgroud)

或“身份证”做一组,mutatelistunnest

df1 %>% 
  group_by(id) %>% 
  mutate(year = list(startyear:endyear)) %>% 
  unnest
Run Code Online (Sandbox Code Playgroud)