2

我想将我的数据框每一列中的前 5 个值替换为N/A. 但是,数据框的形状使得前 5 个值位于每列的不同行中。我尝试过使用库的replace_with_na功能nanier,但我无法正确索引每列中的每一行

我的数据框看起来像(我的值实际上不是连续的):

    col1   col2   col3
     N/A    1     N/A
     N/A    2      1
      1     3      2
      2     4      3
      3     5      4 
      4     6      5 
      5     7      6

我希望生成的数据框看起来像:

    col1   col2   col3
     N/A    N/A    N/A
     N/A    N/A    N/A
     N/A    N/A    N/A
     N/A    N/A    N/A
     N/A    N/A    N/A 
     N/A    6      N/A
     N/A    7      6
4

1 回答 1

2

尝试检查滞后 5 是否为 na。

代码

library(hablar)

df %>% 
  mutate_all(~if_else_(!is.na(lag(., 5)), ., NA))

结果

# A tibble: 7 x 3
   col1  col2  col3
  <dbl> <dbl> <dbl>
1    NA    NA    NA
2    NA    NA    NA
3    NA    NA    NA
4    NA    NA    NA
5    NA    NA    NA
6    NA     6    NA
7    NA     7     6

数据

df <- structure(list(col1 = c(NA, NA, 1, 2, 3, 4, 5), col2 = c(1, 2, 
                                                         3, 4, 5, 6, 7), col3 = c(NA, 1, 2, 3, 4, 5, 6)), row.names = c(NA, 
                                                                                                                        -7L), class = c("tbl_df", "tbl", "data.frame"))
于 2019-07-15T18:41:07.310 回答