如何解决将列中的值替换为另一个值对于所有值都相同
我的数据框由21列组成,对于这个问题,只有一列是相关的: 我想将 a 列中的值2或3或4或5替换为值1(在同一列中)。
除了为下面的任何值2,3,4,5编写代码外,我还在寻找更优雅的东西:
df <- df %>% mutate (a = replace(a,a == 2,1))
df <- df %>% mutate (a = replace(a,a == 3,a == 4,a == 5,1))
所以我只需要在代码中创建条件“或”即可... 有什么解决办法吗?
解决方法
您可以使用across
替换多个列,并使用%in%
替换多个值。例如,如果要替换列a
,b
,c
和d
中的值,则可以执行以下操作:
library(dplyr)
df <- df %>% mutate(across(a:d,~replace(.,. %in% 2:5,1)))
#For dplyr < 1.0.0 use `mutate_at`
#df <- df %>% mutate_at(vars(a:d),1))
在基数R中,您可以使用lapply
进行此操作:
cols <- c('a','b','c','d')
df[cols] <- lapply(df[cols],function(x) replace(x,x %in% 2:5,1))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。