首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在dplyr中转换具有重复名称的数据帧-- mutate()函数

无法在dplyr中转换具有重复名称的数据帧-- mutate()函数
EN

Stack Overflow用户
提问于 2022-09-19 07:30:40
回答 1查看 617关注 0票数 0

昨天,当我试图使用mutate()函数在特定列中重新编码一些值时,一切都很好。但是突然之间,我今天再次运行这些代码,它返回了mutate()函数行中的错误:

代码语言:javascript
复制
 Can't transform a data frame with duplicate names.

回溯:

-1))

  • dplyr::mutate_at(.,c("C001"),~na_if(.,-1))

  • dplyr:::mutate.data.frame(.tbl,!!!funs)

  • dplyr:::mutate_cols(.data,.,caller_env = caller_env())

  • DataMask$new(.data,)caller_env)

  • dplyr:::initialize(...)

这是我昨天用得很好的代码

代码语言:javascript
复制
#recode the 1 in column C001 to be 5, 2 to be 4#

EVS_recode <- EVS_recode %>% mutate(C001= recode(C001, '1' = 5, '2'= 4))

#recode the -1,-2,-4,-5 values to be NA in column C001#

EVS_recode <- EVS_recode %>% mutate_at(c('C001'), ~na_if(.,-1))

EVS_recode <- EVS_recode %>% mutate_at(c('C001'), ~na_if(.,-2))

EVS_recode <- EVS_recode %>% mutate_at(c('C001'), ~na_if(.,-4))

EVS_recode <- EVS_recode %>% mutate_at(c('C001'), ~na_if(.,-5))

这是我第一次拥有如此大规模的与mutate()无关的代码。在使用mutate()时,有人能帮助我或者有类似的问题吗?

感谢您有时间阅读这个!如果有人能给我个提示会很有帮助的。

EN

回答 1

Stack Overflow用户

发布于 2022-09-19 07:51:04

在dataframe中不能有两个同名的变量,因此出现了错误。

您可以尝试一次使用case_when()来实现这一点,也许它解决了错误。

代码语言:javascript
复制
library(dplyr)
df <- tibble::tibble(C001 = c(-1,1,-2,3, -4, -5, 5,5,3,2,1,-1))
df %>% 
  mutate(across(C001, ~ case_when(
    C001 == 1 ~ 5,
    C001 == 2 ~ 4,
    C001 %in% c(-1, -2, -4,-5) ~ NA_real_, 
    TRUE ~ C001
  )))

您也可以使用replace

代码语言:javascript
复制
df %>% mutate(across(C001, ~replace(., . %in% c(-1, -2, -4,-5), NA)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73769850

复制
相关文章

相似问题

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