如何完成数据集并保存变量

豪尔赫·帕雷德斯

因此,我正在修改此人的要求:如何就时间变量“填充” /扩展观察值?

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

因此,他们将其发送给他进行检查:使用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个变量)

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

罗纳克·沙(Ronak Shah)

您可以使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章