我正在处理一个员工流失数据集。有一个名为“流失”的列,它包含1470个yes和no值。我想将这些yes和no值转换为1和0。我在R中安装了dplyr包来使用mutate函数,但我在转换时遇到了问题。下面是我尝试的方法:clean %>% mutate(empAttrcopy$attrition=ifelse(empAttrcopy$attrition=="NO",0,1)) Error: unexpected '=' in "clean %>% mutate(empAttrcopy$attrition="
4条答案
按热度按时间kyvafyod1#
假设
attrition
只包含“YES”或“NO”值,这应该可以工作。首先是一些可重现的数据:为了简单起见,我省略了
empAttrcopy$
前缀。beq87vna2#
我怀疑您有一个名为“empAttrcopy”的 Dataframe ,希望对列“attraction”进行虚拟编码,并将其存储到一个名为“clean”的新 Dataframe 中。
使用
dplyr
时,管道%>%
(最初来自magrittr
)计算它左边的内容,并将结果作为输入提供给右边的下一个函数。因此,如果你想改变“empAttrcopy”中的一列,你需要将它放在第一个%>%
之前。当你这样做时,R知道你正在使用“Attrition”,因此在管道传输之后不需要反向引用它(即不需要$
)。如果您想将变异列的输出存储到一个名为“clean”的新 Dataframe 中,请在开始时使用
<-
或在结束时使用->
对其进行赋值。最后但并非最不重要的一点是,最好将输出存储在一个新列中(例如,将其保存到“attraction_dummy”),这样就不会丢失任何数据。
nvbavucw3#
您可以只使用
base
包中提供的ifelse
函数。 视情况而定。rqenqsqc4#
试试这个:
我通常会添加新列,以便将原始变量
attrition
与新创建的attrition1
进行比较。YES = 1,NO = 0。干杯!