昨天,当我尝试使用mutate()
函数重新编码特定列中的一些值时,一切都很好。但突然,我今天再次运行这些代码,它从mutate()
函数行返回错误:
Can't transform a data frame with duplicate names.
回溯:
- EVS_recode %〉% mutate_at(c(“C001”),~na_if(.,-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(...)
下面是我昨天使用的代码,它们工作得很好
#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()时遇到类似的问题?
谢谢你花时间阅读这篇文章!如果有人能给予我一个提示,那将是非常有帮助的。
2条答案
按热度按时间omqzjyyz1#
你不能有两个变量具有相同的名称在你的dataframe,因此错误。
您可以尝试使用
case_when()
一次性完成此操作,也许它可以解决此错误也可以使用
replace
vptzau2j2#
在你的代码之前尝试df〈- data.frame(df)。