【发布时间】:2021-06-28 04:45:09
【问题描述】:
我尝试循环遍历 mutate 和 fct_recode 函数来重新编码这个问题,但没有成功。有没有办法以 tidyverse 或任何其他方式解决它?抱歉冗长-我想尽可能清楚。
set.seed(2021)
df <- tibble(
a1 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("", "Yes")),
a2 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("", "Yes")),
b1 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("", "Yes")),
b2 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("", "Yes")),
d1 = gl(2, 15, labels = c("Males", "Females")),
d2 = factor(ifelse(sign(rnorm(30))==-1, 0, 1), labels = c("Python", "R"))
)
df %>% count(a1)
# Replace "" with No
myvars <- c("a1", "a2", "b1", "b2")
df %>% mutate(a1 = factor(if_else(a1 == "", "No",
as.character(a1))),
a2 = factor(if_else(a1 == "", "No",
as.character(a1))),
b1= factor(if_else(b1== "", "No",
as.character(b1))))
#---- Attempt one (forloop)
# Desire for all the variables
for (i in myvars){
df <- df %>%
mutate(i = factor(if_else(i == "", "No",
as.character(i))))
}
df %>% count(a1) # No replacement
【问题讨论】:
标签: r for-loop dplyr tidyverse