【问题标题】:How can I complete a dataset and yet conserve variables如何完成数据集并保存变量
【发布时间】: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


    【解决方案1】:

    你可以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)
    

    【讨论】:

    • 你能分享更多细节吗? 'didn't work' 是什么意思?你期待什么,我的回答又是什么?
    • 你的回答给了我与我暴露的第二个数据框相同的结果DF
    • 我知道为什么它不起作用!我不得不删除这部分fill=list(labor_productivity=0),在最后一个fill之前我把这个:df$Name[df$Name=="#¿NOMBRE?"]&lt;-NA然后,最后一个填充,但我得到了最后一个fill这样的:fill(Name, Brunch,.direction="downup")谢谢!!跨度>
    猜你喜欢
    • 2018-01-02
    • 2013-12-29
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2018-12-20
    • 2019-04-24
    相关资源
    最近更新 更多