为什么 mutate 在 R 中的 for 循环中不起作用?

问题描述 投票:0回答:0

我有一些变量应该编码为 0-3 或 NA,但已用“.”编码为 1-4。对于北美。我想在 for 循环中使用 mutate() 和 case_when() 重新编码它们,但在运行循环后我的数据不会改变。没有错误出现。

转换前的数据是这样的:

tabyl(df$epds_1)

# df$epds_1  n     
# .          6 
# 1        472 
# 2         93 
# 3         45 
# 4         23 
# <NA>      10 

我尝试使用以下方法改变十个变量:

    for (v in c("epds_1", "epds_2", "epds_3", "epds_4", "epds_5", "epds_6",
                "epds_7", "epds_8", "epds_9","epds_10")) {
      df <- df %>% mutate(`v` = case_when(`v` == "." ~ NA_real_, 
                                          `v` == "1" ~ 0, 
                                          `v` == "2" ~ 1, 
                                          `v` == "3" ~ 2, 
                                          `v` == "4" ~ 3))
      }

希望得到下表的结果(原表的上下行合计16):

tabyl(df$epds_1)
# df$epds_1  n     
# 0        472 
# 1         93 
# 2         45 
# 3         23 
# <NA>      16 
r loops mutate
© www.soinside.com 2019 - 2024. All rights reserved.