我怎样才能完成数据集并保留变量
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)
所以我正在修改这个人问的内容: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)