【问题标题】:Loop over multiple datasets and multiple columns but one missing a variable循环遍历多个数据集和多个列,但其中一个缺少变量
【发布时间】:2021-09-28 16:45:05
【问题描述】:

我正在使用多个数据集(调查波),包括我以下列方式提取的相同变量。

首先我创建一个函数来选择相关变量:

files <- list.files(path = getwd())
tmp <- map(files, read_stata)

extractColumns <- function(x){
  select(x, "var1", "var2", "var3", "var4", "var5", "wt")
}

然后我将该函数应用于所有数据集:

df <- map(tmp,extractColumns) %>% bind_rows()

但是,“wt”变量(权重)在调查的某些迭代中不存在。所以我收到以下错误:

 Error: Can't subset columns that don't exist.
x Column `wt` doesn't exist.
Run `rlang::last_error()` to see where the error occurred. 

由于此变量未包含在所有波中,我希望代码为没有此变量的波创建一个变量“wt”,并为这些波中的所有受访者赋值 1。

【问题讨论】:

  • if (!("wt" %in% names(x))) x &lt;- x %&gt;% add_column(wt=1)

标签: r function loops dictionary dplyr


【解决方案1】:

我觉得你需要dplyr::any_of:

myvars <- c("var1", "var2", "var3", "var4", "var5", "wt")

extractColumns <- function(x){
  select(x, any_of(myvars))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 2022-01-27
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2011-08-28
    相关资源
    最近更新 更多