R 在某些列中替换NAs

R 在某些列中替换NAs,r,R,我想我非常接近解决方案。 但不幸的是我不明白 x1kb <- c(1:10, NA, NA, 5,6,7,8) y1 <- rep(c(NA,777),each=8) x2kb <- c(1:10, NA, NA, 5,6,7,8) y2 <- rep(c(NA,777),each=8) data1<- data.frame(x1kb, y1, x2kb, y2) 我用dplyr试过了。但我总是会出错 library(dplyr) #replace NA with

我想我非常接近解决方案。 但不幸的是我不明白

x1kb <- c(1:10, NA, NA, 5,6,7,8)
y1 <- rep(c(NA,777),each=8)
x2kb <- c(1:10, NA, NA, 5,6,7,8)
y2 <- rep(c(NA,777),each=8)
data1<- data.frame(x1kb, y1, x2kb, y2)
我用
dplyr
试过了。但我总是会出错

library(dplyr)
#replace NA with 0 if colname includes "kb"
data1[is.na(data1)] <- 0 %>% select(data1, contains("kb"))
试一试

data1$x1kb[is.na(data1$x1kb)]Try


data1$x1kb[is.na(data1$x1kb)]这里是一个dplyr解决方案,每个解决方案都有
mutate\u
。您可以使用在
select()
中使用的相同选择器将其限制为所需的列。在这里,我使用
结束\u和

data1 <- mutate_each(data1, funs=funs(ifelse(is.na(.),0,.)), ends_with("kb"))

这是一个dplyr解决方案,每个解决方案都有
mutate\u
。您可以使用在
select()
中使用的相同选择器将其限制为所需的列。在这里,我使用
结束\u和

data1 <- mutate_each(data1, funs=funs(ifelse(is.na(.),0,.)), ends_with("kb"))

@阿克伦:我认为这是一个不同的问题。您的链接只清除了我问题的一半,而不是重要的问题,即只在某些列中替换NAs,而不是全部。好的,我重新打开了它。@akrun:我认为这是一个不同的问题。你的链接只清除了我问题的一半,而不是重要的事情,那就是只在某些列中替换NAs,而不是在所有列中。好的,我重新打开了它。注意,如果感兴趣的列是因子,因子值将替换为它们的数字标记。请注意:对于使用更新的dplyr代码的答案。谢谢你指出这一点,我更新了答案注意,如果感兴趣的列是因子,则因子值将替换为它们的数字标记。参见:对于使用更新的dplyr代码的答案。感谢您指出这一点,我更新了答案
data1$x1kb[is.na(data1$x1kb)] <- 0
data1$x2kb[is.na(data1$x2kb)] <- 0
data1 <- mutate_each(data1, funs=funs(ifelse(is.na(.),0,.)), ends_with("kb"))
data1 <- mutate(data1, across(ends_with("kb"), ~ifelse(is.na(.x),0,.x)))