新手还在学习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”被转换为是/否。
以及如何将它们同时转换为因子?我只知道如何一行一行地做。
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)
您可以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)