【发布时间】:2021-02-13 04:11:31
【问题描述】:
所以我正在修改这个人问的内容:How do I "fill down"/expand observations with respect to a time variable?
我的数据集也需要同样的东西:
所以他们派他检查这个:Complete column with group_by and complete(我试图复制答案代码,但他们没有工作)
所以我的数据集是这样的(我做了一个简化,在真实的数据集中有更多的变量,真实的维度是 631230 obs. of 21 个变量)
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 关联的名称和早午餐)。
我尝试使用第二个链接中的这段代码(适应我的数据集)
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 个变量)
那么,第二个问题:这段代码有什么问题?
【问题讨论】:
标签: r database dataframe tidyr