Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
R 仅对最后的连续列缺少值替换_R - Fatal编程技术网

R 仅对最后的连续列缺少值替换

R 仅对最后的连续列缺少值替换,r,R,我有一个数据框,其中有10列标记为0、1或NA。 我想将NA替换为0,但仅当NAs在最后一列中是连续的时,我希望这样一行: c(1,0,1,NA,0,NA,NA,NA,NA) 变成 c(1,0,1,NA,0,0,0,0,0) 我试过这个 Nume<-ifelse(rowSums(is.na(Numerica[, 3:10])) != ncol(Numerica[3:10]), Numerica[,3:10] == 0) 可能有更好的方法来解决这个问题,但是,这里有一个使用apply的基本

我有一个数据框,其中有10列标记为0、1或NA。 我想将NA替换为0,但仅当NAs在最后一列中是连续的时,我希望这样一行:
c(1,0,1,NA,0,NA,NA,NA,NA)

变成

c(1,0,1,NA,0,0,0,0,0)

我试过这个

Nume<-ifelse(rowSums(is.na(Numerica[, 3:10])) != ncol(Numerica[3:10]), Numerica[,3:10] == 0)

可能有更好的方法来解决这个问题,但是,这里有一个使用
apply
的基本R方法,它只将行中最后一个
NA
s替换为0

df[] <- t(apply(df, 1, function(x) {
  y <- cumsum(!is.na(x))
  replace(x, max(y) == y & is.na(x), 0)
}))

df
#  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  1  0  1 NA  0  0  0  0  0   0
#2  1  0  1 NA  0 NA NA NA  0   0
#3  1  0  1 NA  0 NA NA NA  0   1

df[]可能有更好的方法来解决这个问题,但是,这里有一个使用
apply
的基本R方法,它只将行中最后一个
NA
s替换为0

df[] <- t(apply(df, 1, function(x) {
  y <- cumsum(!is.na(x))
  replace(x, max(y) == y & is.na(x), 0)
}))

df
#  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  1  0  1 NA  0  0  0  0  0   0
#2  1  0  1 NA  0 NA NA NA  0   0
#3  1  0  1 NA  0 NA NA NA  0   1

df[]你也可以试试这个。我使用了Ronak的数据帧

library(tidyverse)
library(zoo)
as_tibble(t(df)) %>%  
  mutate_all(~zoo::na.fill(.,  c(NA, NA, 0)))
# A tibble: 10 x 3
     `1`   `2`   `3`
   <int> <int> <int>
 1     1     1     1
 2     0     0     0
 3     1     1     1
 4    NA    NA    NA
 5     0     0     0
 6     0    NA    NA
 7     0    NA    NA
 8     0    NA    NA
 9     0     0     0
10     0     0     1
库(tidyverse)
图书馆(动物园)
不稳定(t(df))%>%
变异所有(~zoo::na.fill(,c(na,na,0)))
#一个tibble:10x3
`1`   `2`   `3`
1     1     1     1
2     0     0     0
3     1     1     1
4娜娜娜娜
5     0     0     0
60纳纳
70纳纳
80NA
9     0     0     0
10     0     0     1

您也可以试试这个。我使用了Ronak的数据帧

library(tidyverse)
library(zoo)
as_tibble(t(df)) %>%  
  mutate_all(~zoo::na.fill(.,  c(NA, NA, 0)))
# A tibble: 10 x 3
     `1`   `2`   `3`
   <int> <int> <int>
 1     1     1     1
 2     0     0     0
 3     1     1     1
 4    NA    NA    NA
 5     0     0     0
 6     0    NA    NA
 7     0    NA    NA
 8     0    NA    NA
 9     0     0     0
10     0     0     1
库(tidyverse)
图书馆(动物园)
不稳定(t(df))%>%
变异所有(~zoo::na.fill(,c(na,na,0)))
#一个tibble:10x3
`1`   `2`   `3`
1     1     1     1
2     0     0     0
3     1     1     1
4娜娜娜娜
5     0     0     0
60纳纳
70纳纳
80NA
9     0     0     0
10     0     0     1