我在处理一个员工流失数据集。有一个名为减值的列,它包含1470“是”和“否”值。我想将这些yes和no值转换为1和0。我在R中安装了dplyr包以使用变体函数,但我在转换时遇到了问题。以下是我尝试过的:
clean %>% mutate(empAttrcopy$attrition=ifelse(empAttrcopy$attrition=="NO",0,1)) Error: unexpected '=' in "clean %>% mutate(empAttrcopy$attrition="
发布于 2022-04-10 02:55:24
假设attrition只包含“是”或“否”值,这应该有效。首先是一些可复制的数据:
set.seed(42)
attrition <- sample(c("YES", "NO"), 15, replace=TRUE)
attrition
# [1] "YES" "YES" "YES" "YES" "NO" "NO" "NO" "NO" "YES" "NO" "YES" "NO" "YES" "NO" "YES"
attrition <- as.numeric(attrition=="YES")
attrition
# [1] 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1为了简单起见,我取消了empAttrcopy$前缀。
发布于 2022-04-10 02:59:33
我怀疑您有一个名为"empAttrcopy“的dataframe,您想要对列进行虚拟代码,并将其存储到一个名为”干净“的新数据框架中。
当使用dplyr时,管道%>% (最初来自magrittr)计算其左侧的内容,并将结果作为输入输入到右侧的下一个函数。因此,如果要在"empAttrcopy“中修改列,则需要将其放在第一个%>%之前。当这样做时,R知道您正在使用“消耗”,因此没有必要在管道后回引用它(即不需要$)。
empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1))如果您想要将您的变异列的输出存储到一个名为“干净”的新数据格式中,可以通过在开始使用<-或在末尾使用->来分配它。
clean <- empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1))
# or
empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1)) -> clean最后但并非最不重要的一点是,最好将输出存储在新列中(例如,将其保存为"attrition_dummy"),这样就不会丢失任何数据。
clean <- empAttrcopy %>% mutate(attrition_dummy = ifelse(attrition == "No", 0, 1))发布于 2022-04-10 03:40:39
您只需使用ifelse包上可用的base函数即可。这允许对表达式进行适当的计算和赋值()。
a = c(5,7,2,9)
(a %% 2 == 0,"even","odd")
[1] "odd" "odd" "even" "odd"https://stackoverflow.com/questions/71813355
复制相似问题