首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将R中带有yes或no值的变量转换为1和0?

如何将R中带有yes或no值的变量转换为1和0?
EN

Stack Overflow用户
提问于 2022-04-10 02:34:09
回答 3查看 143关注 0票数 0

我在处理一个员工流失数据集。有一个名为减值的列,它包含1470“是”和“否”值。我想将这些yes和no值转换为1和0。我在R中安装了dplyr包以使用变体函数,但我在转换时遇到了问题。以下是我尝试过的:

clean %>% mutate(empAttrcopy$attrition=ifelse(empAttrcopy$attrition=="NO",0,1)) Error: unexpected '=' in "clean %>% mutate(empAttrcopy$attrition="

EN

回答 3

Stack Overflow用户

发布于 2022-04-10 02:55:24

假设attrition只包含“是”或“否”值,这应该有效。首先是一些可复制的数据:

代码语言:javascript
复制
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$前缀。

票数 3
EN

Stack Overflow用户

发布于 2022-04-10 02:59:33

我怀疑您有一个名为"empAttrcopy“的dataframe,您想要对列进行虚拟代码,并将其存储到一个名为”干净“的新数据框架中。

当使用dplyr时,管道%>% (最初来自magrittr)计算其左侧的内容,并将结果作为输入输入到右侧的下一个函数。因此,如果要在"empAttrcopy“中修改列,则需要将其放在第一个%>%之前。当这样做时,R知道您正在使用“消耗”,因此没有必要在管道后回引用它(即不需要$)。

代码语言:javascript
复制
empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1))

如果您想要将您的变异列的输出存储到一个名为“干净”的新数据格式中,可以通过在开始使用<-或在末尾使用->来分配它。

代码语言:javascript
复制
clean <- empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1))

# or

empAttrcopy %>% mutate(attrition = ifelse(attrition == "No", 0, 1)) -> clean

最后但并非最不重要的一点是,最好将输出存储在新列中(例如,将其保存为"attrition_dummy"),这样就不会丢失任何数据。

代码语言:javascript
复制
clean <- empAttrcopy %>% mutate(attrition_dummy = ifelse(attrition == "No", 0, 1))
票数 0
EN

Stack Overflow用户

发布于 2022-04-10 03:40:39

您只需使用ifelse包上可用的base函数即可。这允许对表达式进行适当的计算和赋值(​​)。

代码语言:javascript
复制
a = c(5,7,2,9)
(a %% 2 == 0,"even","odd")

[1] "odd"  "odd"  "even" "odd"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71813355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档