在不同的列中同时将NA转换为0,但不是在R中全部
我有这样一个数据集:在不同的列中同时将NA转换为0,但不是在R中全部,r,na,R,Na,我有这样一个数据集: ID A B C 1 1 0 0 1 NA 0 0 2 0 NA NA 2 1 NA 0 可通过以下方式复制: df <- data.frame("ID"=c(rep(1,2),rep(2,2)),"A"=c(1,NA,0,1),"B"=c(rep(0,2),rep(NA,2)),"C"=c(rep(0,2),NA,0)) df如果您只有两列,我将使用您的方式或: df[,c(“A”,“B”)][is.
ID A B C
1 1 0 0
1 NA 0 0
2 0 NA NA
2 1 NA 0
可通过以下方式复制:
df <- data.frame("ID"=c(rep(1,2),rep(2,2)),"A"=c(1,NA,0,1),"B"=c(rep(0,2),rep(NA,2)),"C"=c(rep(0,2),NA,0))
df如果您只有两列,我将使用您的方式或:
df[,c(“A”,“B”)][is.na(df[,c(“A”,“B”)])]如果你只有两列,我会用你的方式,或者:
df[,c(“A”,“B”)][is.na(df[,c(“A”,“B”)])]更新:如Darren所建议
colList<-c("A","B")
df %>% mutate_at(colList, function(x) is.na(x)<-0 )
更新:根据Darren的建议
colList<-c("A","B")
df %>% mutate_at(colList, function(x) is.na(x)<-0 )
使用tidyr
可以使用以下解决方案:
library(tidyr)
df %>%
replace_na(list(A = 0, B = 0))
在列表参数中,您可以指定应替换的NA
值。使用tidyr
可以使用以下解决方案:
library(tidyr)
df %>%
replace_na(list(A = 0, B = 0))
在列表参数中,您可以指定应替换的NA
值。可能df[,c(“A”,“B”)][is.NA(df[,c(“A”,“B”)]]可能df[,c(“A”,“B”)][is.NA(df[,c(“A”,“B”)]我认为mutate_at
更直接。我认为mutate_at
更直接。为什么提到dplyr
?它不用于您的解决方案。@DarrenTsai您是对的,谢谢!编辑答案。你为什么提到dplyr
?它不用于您的解决方案。@DarrenTsai您是对的,谢谢!编辑答案。
colList<-c("A","B")
df %>% mutate_if(names(df) %in% colList, function(x) is.na(x)<-0 )
ID A B C
1 1 0 0 0
2 1 0 0 0
3 2 0 0 NA
4 2 0 0 0
library(tidyr)
df %>%
replace_na(list(A = 0, B = 0))