Сдвинуть значения из отдельных ячеек в более высокие строки в R? - PullRequest
1 голос
/ 05 мая 2020

У меня есть фрейм данных, который выглядит следующим образом:

   index A        B        C       `NA`  D      E  
   <chr> <chr>    <chr>    <chr>    <chr> <chr> <chr>
 1 95    0.965823 NA       NA       NA    NA    NA   
 2 NA    NA       0.028407 0.002663 NA    NA    NA   
 3 96    0.948069 NA       NA       NA    NA    NA   
 4 NA    NA       0.047048 0.001775 NA    NA    NA   
 5 97    1        NA       NA       NA    NA    NA   
 6 NA    NA       NA       NA       0     NA    NA   
 7 NA    NA       NA       NA       0     NA    NA  
 8 98    0.999556 NA       NA       NA    NA    NA   
 9 NA    NA       NA       NA       0     NA    0.000444 

Для каждого индекса я хочу, чтобы все связанные значения были в одной строке. Я также хочу превратить все значения NA в 0. Как мне это сделать в R?

   index A        B        C       `NA`   D     E  
   <chr> <chr>    <chr>    <chr>    <chr> <chr> <chr>
 1 95    0.965823 0.028407 0.028407 0     0     0    
 3 96    0.948069 0.047048 0.001775 0     0     0   
 4 97    1        0        0        0     0     0     
 8 98    0.999556 0        0        0     0     0.000444   

1 Ответ

0 голосов
/ 05 мая 2020

Одно решение dplyr и tidyr может быть:

df %>%
 fill(index) %>%
 group_by(index) %>%
 summarise_all(~ ifelse(all(is.na(.)), 0, first(na.omit(.))))

  index     A      B       C X.NA.     D        E
  <int> <dbl>  <dbl>   <dbl> <dbl> <dbl>    <dbl>
1    95 0.966 0.0284 0.00266     0     0 0       
2    96 0.948 0.0470 0.00178     0     0 0       
3    97 1     0      0           0     0 0       
4    98 1.000 0      0           0     0 0.000444
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...