Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不同的列中同时将NA转换为0,但不是在R中全部_R_Na - Fatal编程技术网

在不同的列中同时将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))