在 dplyr 中重新编码给出错误 : Argument 2 must be named, 未命名

标签 r dataframe dplyr

我有一个像这样的数据框“员工”:

Emp_Id,Name,Dept_Id
20203,Sam,1
20301,Rodd,2
30321,Mike,3
40403,Derik,4

现在我想以 Dept_Id 具有部门名称而不是 Dept_Id 的方式转换此数据框。

为此,我正在尝试使用 dplyr 中的 recode,因为我的转换逻辑来自 csv,所以我必须使用变量来代替转换逻辑。

我使用 read.csv 获取我的数据框 df 我的逻辑(1=HR,2=IT 等)所在的位置,然后将其放入列表中:

df:

Source,Target,Transformation
Employee,Emp,"1=HR,2=Sales,3=Finance,4=IT"

df获取转换登录

myList <- as.character(df[1,3])

现在按照逻辑替换employee中的数据

employee$Dept_Id <- recode(employee$Dept_Id,myList)

在这条线上它给了我:

Error: Argument 2 must be named, not unnamed

最佳答案

有多种方法可以做到这一点。一种方法是:

方法一:

df$Dept_Id <-  name[match(df$Dept_Id, names(name))]

    Emp_Id Name Dept_Id
1:  20203  Sam      HR
2:  20301 Rodd      IT

方法二:

df <- df %>% 
    mutate(Dept_Id_2 = case_when(
        Dept_Id == 1 ~ 'HR',
        Dept_Id == 2 ~ 'IT'
    ))

方法三:

codes <- list("1" = "HR", "2" = "IT")

df %>% 
    mutate(d2 = recode(Dept_Id, !!!codes))

设置

df <- fread("
Emp_Id  Name Dept_Id
20203   Sam  1
20301   Rodd 2            
")

name <- c("1" = "HR", "2"="IT")

关于在 dplyr 中重新编码给出错误 : Argument 2 must be named, 未命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995335/

相关文章:

r - 如何在 R 中像在 C# 中一样使用 linq 进行函数链接,我们有方法链接?

python - Pandas:如何将具有重复索引值的数据帧转换为字典

python - 如何使第一个索引列为空?

r - 使用自定义中断来剪切日期向量

r - 如何在 ESS 中重命名 R session ?

r - 使用 ggplotly 对箱线图进行分组时不考虑分组

python - 比较列中的字符串并在 python 中创建相应的新列

r - 过滤 R 中的任何缺失值

mysql - dplyr 加入带有变音符号的 Mysql 数据

R Plotly 饼图自定义颜色