因此,我正在修改此人的要求:如何就时间变量“填充” /扩展观察值?
我的数据集需要同样的东西:
因此,他们将其发送给他进行检查:使用group_by完成列并完成(我试图复制答案代码,但是他们没有用)
所以我的数据集看起来像这样(我简化了一下,在实际的数据集中有更多的变量,实际的维数是631230个观测值,包含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
它按我的意愿完成了面板,但是有没有办法保留Name,Brunch(以及此处未列出的其他列)?
如果数量变量(销售,工资)为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个,共3个变量)
所以,第二个问题:这段代码有什么问题?
您可以使用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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句