我的样本数据看起来像这样(真实数据更大)
library(tidyverse, warn.conflicts = F)
df <- tibble(chr_x = c(0,0,1,1,1,4,4,4,5,5,6,7),
pos_x = c(1,2,3,4,5,6,7,8,9,0,1,2),
chr_y = c(1,2,3,3,3,2,1,1,0,0,1,5),
pos_some = c(1,2,3,4,5,6,7,8,9,0,1,2))
我需要替换某些列中的特定值(比如以 chr
开头的值)为 NA
,我是这样做的。
df %>% mutate_at(vars(starts_with("chr")), ~ na_if(., 0))
#> # A tibble: 12 x 4
#> chr_x pos_x chr_y pos_some
#> <dbl> <dbl> <dbl> <dbl>
#> 1 NA 1 1 1
#> 2 NA 2 2 2
#> 3 1 3 3 3
#> 4 1 4 3 4
#> 5 1 5 3 5
#> 6 4 6 2 6
#> 7 4 7 1 7
#> 8 4 8 1 8
#> 9 5 9 NA 9
#> 10 5 0 NA 0
#> 11 6 1 1 1
#> 12 7 2 5 2
下一部分是我卡住的地方。现在我需要将后续列中的值替换为
NA
,其中在上面的列中值为NA
。我该怎么做?生成的数据框应该如下所示。#> # A tibble: 12 x 4
#> chr_x pos_x chr_y pos_some
#> <dbl> <dbl> <dbl> <dbl>
#> 1 NA NA 1 1
#> 2 NA NA 2 2
#> 3 1 3 3 3
#> 4 1 4 3 4
#> 5 1 5 3 5
#> 6 4 6 2 6
#> 7 4 7 1 7
#> 8 4 8 1 8
#> 9 5 9 NA NA
#> 10 5 0 NA NA
#> 11 6 1 1 1
#> 12 7 2 5 2
这篇文章是由 reprex 包 (v0.3.0) 在 2020-05-21 创建的。