我怎样才能完成数据集并保留变量

How can I complete a dataset and yet conserve variables

所以我正在修改这个人问的内容:How do I "fill down"/expand observations with respect to a time variable?

我的数据集需要同样的东西:

所以他们派他去检查这个:(我试图复制答案代码,但没有成功)

所以我的数据集是这样的(我做了一个简化,在真实的数据集中有更多的变量,真实的维度是 631230 obs. of 21 variables)

df

Year   ID          Name  Brunch Sales  Wages   Labor productivity
2014   1750941579   JEN    A     3       2           1.5
2015   1750941579   JEN    A     4       2           2
2016   1750941579   JEN    A     6       4           1.5
2017   1750941579   JEN    A     8       4           2
2018   1750941579   JEN    A     8       4           2
2014   1303477204   MIC    B     6       2           3
2015   1303477204   MIC    B     8       4           2

所以我使用了这个代码DF<-complete(df, ID, Year=full_seq(Year, period=1),fill=list(Labor productivity=0))

得到了这样的东西

Year   ID           Name       Brunch     Sales  Wages   Labor productivity
2014   1750941579   JEN           A        3       2           1.5
2015   1750941579   JEN           A        4       2           2
2016   1750941579   JEN           A        6       4           1.5
2017   1750941579   JEN           A        8       4           2
2018   1750941579   JEN           A        8       4           2
2014   1303477204   MIC           B        6       2           3
2015   1303477204   MIC           B        8       4           2
2016   1303477204   #¿NOMBRE?     B        0       0           NaN
2017   1303477204    NA           NA       NA      NA          NA 
2018   1303477204    NA           NA       NA      NA          NA 

它完成了面板,如我所愿,但有没有办法保留名称、早午餐(以及此处未列出的其他列)?

如果定量变量(销售额、工资)为 NA 或 0 也没关系,我不介意。但我需要保留与 ID 关联的定性变量(Name 和 Brunch)。

我尝试使用第二个 link 中的代码(适应我的数据集)

DF<-df %>% 
  group_by(Year, ID) %>% 
  summarise(`Labor Productivity`=n()) %>% 
  ungroup() %>% 
  complete(Year, ID, fill = list(`Labor Productivity`=1))

但我只得到 summarise() regrouping output by 'Year' (override with .groups argument)

输出数据集如下所示:

Year   ID          Name  Labor productivity
2014   1750941579   JEN        1
2014   1303477204   MIC        1
2015   1750941579   JEN        1
2015   1303477204   MIC        1
2016   1750941579   JEN        1
2016   1303477204   MIC        1

等等...(维度:631230 obs. of 3 variables)

那么,第二个问题:这段代码有什么问题?

您可以 fill 您想要的变量。

library(dplyr)
library(tidyr)

df %>%
  complete(ID, Year=full_seq(Year, period=1),fill=list(Labor_productivity=0)) %>%
  group_by(ID) %>%
  fill(Name, Brunch)