首页 > 解决方案 > R:如果条目以字母结尾,则将上面一或两行的信息粘贴到空单元格中

问题描述

我有一个大数据框,其中有一些我希望填充的空单元格。数据帧的快照在这里1

如果加入以字母结尾,我想以某种方式填充空单元格,并粘贴“上面的下一个加入码,如果它不以字母结尾+该行的加入码”例如对于第 3 行:Q15149 V144M,对于行4、Q15149 V117M。

任何有关如何解决此问题的帮助将不胜感激。

标签: rdataframe

解决方案


library(tidyverse)

data <- tibble(
  Accession = c("Q09666", "Q15149", "V144M", "V117M"),
  Gene.Symbol = c("AHNAK", "PLEC", NA, NA)
)
data
#> # A tibble: 4 x 2
#>   Accession Gene.Symbol
#>   <chr>     <chr>      
#> 1 Q09666    AHNAK      
#> 2 Q15149    PLEC       
#> 3 V144M     <NA>       
#> 4 V117M     <NA>

fills <-
  data %>%
  transmute(id = row_number(), Accession = Accession) %>%
  filter(!Accession %>% str_ends("[A-Z]"))
fills
#> # A tibble: 2 x 2
#>      id Accession
#>   <int> <chr>    
#> 1     1 Q09666   
#> 2     2 Q15149

data %>%
  mutate(
    Gene.Symbol = Gene.Symbol %>% map2_chr(row_number(), ~ {
      ifelse(!is.na(.x), .x, fills %>% filter(id <= .y) %>%
        pull(Accession) %>%
        last())
    })
  )
#> # A tibble: 4 x 2
#>   Accession Gene.Symbol
#>   <chr>     <chr>      
#> 1 Q09666    AHNAK      
#> 2 Q15149    PLEC       
#> 3 V144M     Q15149     
#> 4 V117M     Q15149

reprex 包(v2.0.1)创建于 2021-09-14


推荐阅读