如何在R中将带有0和1的多个变量列转换为是和否

New*_*der -1 r dplyr

新手还在学习R。

我正在尝试将包含 0 和 1 的选择性列转换为 yes 或 no。

我正在做一种新手方法,逐行进行

s_r_data_no_na_split_rename_conv <- s_r_data_no_na_split_rename %>%
  mutate(BPMeds = ifelse(BPMeds == "1","Yes","No"))

s_r_data_no_na_split_rename_conv <- s_r_data_no_na_split_rename %>%
  mutate(prevalentStroke = ifelse(prevalentStroke == "1","Yes","No"))

s_r_data_no_na_split_rename_conv <- s_r_data_no_na_split_rename %>%
  mutate(prevalentHyp = ifelse(prevalentHyp == "1","Yes","No"))

s_r_data_no_na_split_rename_conv <- s_r_data_no_na_split_rename %>%
  mutate(TenYearCHD = ifelse(TenYearCHD == "1","Yes","No")
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,只有最后选择的变量列“TenYearCHD”被转换为是/否。

R 中的代码

以及如何将它们同时转换为因子?我只知道如何一行一行地做。

s_r_data_no_na_split_rename_conv$BPMeds <- as.factor(s_r_data_no_na_split_rename_conv$BPMeds)
s_r_data_no_na_split_rename_conv$prevalentStroke <- as.factor(s_r_data_no_na_split_rename_conv$prevalentStroke)
s_r_data_no_na_split_rename_conv$prevalentHyp <- as.factor(s_r_data_no_na_split_rename_conv$prevalentHyp)
s_r_data_no_na_split_rename_conv$TenYearCHD <- as.factor(s_r_data_no_na_split_rename_conv$TenYearCHD)
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 5

您可以across将相同的函数应用于多个列。

library(dplyr)
s_r_data_no_na_split_rename %>%
  mutate(across(c(BPMeds, prevalentStroke, prevalentHyp, TenYearCHD), 
                  ~factor(ifelse(.x == "1","Yes","No"))))
                  #Without ifelse
                  #~factor(c('No', 'Yes')[(.x == "1") + 1]))
Run Code Online (Sandbox Code Playgroud)

在早期版本中,dplyr这是使用以下命令完成的mutate_at

s_r_data_no_na_split_rename %>%
   mutate_at(vars(c(BPMeds, prevalentStroke, prevalentHyp, TenYearCHD)), 
                  ~factor(ifelse(.x == "1","Yes","No")))
Run Code Online (Sandbox Code Playgroud)