R语言自定义筛选器问题:动态变量名筛选无结果求助
解决dplyr动态变量筛选的问题
你的代码返回0条观测的核心原因是:paste0生成的是字符串(比如"all_people_31DEC2023_filter"),直接在filter里写all_people_31DEC_CurrentYr == "1",本质是在比较这个字符串和"1",自然不会匹配到任何数据。
下面是几种可行的解决方法:
方法1:使用.data代词(dplyr推荐写法)
通过.data[[变量名字符串]]的方式,从数据框中动态取出对应变量:
year <- 2024 var_name <- paste0("all_people_31DEC", year-1, "_filter") CleanData <- RawData %>% filter(.data[[var_name]] == "1")
方法2:使用tidyeval语法(sym() + !!)
把字符串转换成变量符号,再通过!!解引用让dplyr识别为变量:
year <- 2024 var_name <- paste0("all_people_31DEC", year-1, "_filter") CleanData <- RawData %>% filter(!!sym(var_name) == "1")
方法3:基础R写法
如果不想用dplyr,直接用基础R的索引也能实现:
year <- 2024 var_name <- paste0("all_people_31DEC", year-1, "_filter") CleanData <- RawData[RawData[[var_name]] == "1", ]
以上三种方法都能正确匹配目标变量,得到预期的6000条结果。
内容的提问来源于stack exchange,提问作者Gabby
相关产品推荐
相关产品推荐

