R 用另一个值将列中的值替换到数据框中(所有值相同)
我的数据框由21列组成,对于此问题,只有一列相关: 我希望将列a中的值2或3或4或5替换为值1(在同一列中) 除了为任何值2,3,4,5执行下面的代码之外,我正在寻找更优雅的代码:R 用另一个值将列中的值替换到数据框中(所有值相同),r,replace,R,Replace,我的数据框由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,1)) df <- df %>% mutate (a = replace(a, a ==
df <- df %>% mutate (a = replace(a, a == 2,1))
df <- df %>% mutate (a = replace(a, a == 3,1))
df <- df %>% mutate (a = replace(a, a == 4,1))
df <- df %>% mutate (a = replace(a, a == 5,1))
df%变异(a=replace(a,a==2,1))
df%变异(a=替换(a,a==3,1))
df%变异(a=替换(a,a==4,1))
df%变异(a=替换(a,a==5,1))
所以我只需要在代码中输入条件“或”我需要创建。。。
有什么解决方案吗?您可以在
中使用替换多列,并在%
中使用%替换多个值。例如,如果要替换列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), ~replace(., . %in% 2:5, 1))
但是如果我的价值观中没有时间顺序,我怎么写呢?例如3,6,8,2您可以使用replace(,.%在%c(3,6,8,2),1)
cols <- c('a','b','c','d')
df[cols] <- lapply(df[cols], function(x) replace(x, x %in% 2:5, 1))