【发布时间】:2017-10-13 14:57:01
【问题描述】:
我正在尝试将欧洲社会调查中的许多 Stata 文件合并到 R 中的一个数据框中。Stata 文件来自不同年份,并存储在遵循特定逻辑的不同文件夹中 - 'C:\data\ess \2002'、'C:\data\ess\2004' 等等。但是,这些文件没有一致的名称。但它们都有我感兴趣的相同变量。对于每个文件,我想计算各国的加权平均值并通过以下方式添加有关年份的信息:
library(tidyverse)
library(haven)
ess2002 <- read_dta("C:/data/ESS/2002/ESS1e06_4.dta") %>%
select(cntry, pspwght, starts_with('ppl') ) %>%
group_by(cntry) %>%
summarize(ppltrst = weighted.mean(ppltrst, pspwght, na.rm = TRUE),
pplfair = weighted.mean(pplfair, pspwght, na.rm = TRUE),
pplhlp = weighted.mean(pplhlp, pspwght, na.rm = TRUE)) %>%
mutate(year = 2002)
然后我想通过附加数据框将所有年份的数据组合成一个数据框,例如ess <- bind_rows(ess2002, ess2004, ...)。这种方法效果很好,但并不那么优雅。我假设我可以将文件名和年份存储在向量中并循环它们或以某种方式使用 purrr,但我还没有弄清楚如何。一个问题是我不想同时在内存中拥有所有完整的Stata数据集,所以我想在读入下一个文件之前从一个文件中选择相关变量。
谁能帮我找到更优雅的解决方案?任何帮助将不胜感激。
【问题讨论】:
-
抱歉,我应该使用“优雅”这个词来打开那扇门,但我仍然会感谢有关如何使用循环或使用 purrr 找到解决方案的任何建议。