Подмножество df суммой значений, отличных от NA, в другом столбце - PullRequest
0 голосов
/ 26 мая 2020

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

> merged%>%group_by(variable)%>%slice(5)%>%head(15)
# A tibble: 15 x 5
# Groups:   variable [15]
   site_ID  variable   value 
   <chr>     <chr>    <dbl>         
   ak074   !NM03.S  NA    
   ak074   !NM05.S  NA    
   ak074   !NM091S  NA    
   ak074   !NM19N.  NA    
   ak116   ?C-5-7W. NA    
   cana157 001011   NA    
   cana157 001012   NA    
   cana157 001021   NA    
   cana157 001022   NA    
   cana157 001031   NA    
   cana157 001032   NA    
   cana157 001041   NA    
   cana157 001061   NA    
   cana157 001062   NA    
   cana157 001071   0.18 

Я хочу определить, сколько не-NA values существует на variable, и добавить эту сумму как столбец в исходный фрейм данных. Я продолжаю использовать следующий код:

merged1 <- merged %>% group_by(variable) %>% mutate(k = colSums(!is.na(value)))

Но он выдает ошибку:

Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
'x' must be an array of at least two dimensions

Что я делаю не так?

EDIT: Я попробовал просто sum вот так:

merged1 <- merged  %>% group_by(variable) %>% mutate(k = sum(!is.na(value)))

Но он печатает одно и то же значение по всему столбцу, а не по-разному для каждой переменной.

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Вариант с base R

rowsum(+(!is.na(df$value)), df$variable)
0 голосов
/ 26 мая 2020

Нашел проблему. Между пакетами возник конфликт, и указание dplyr сработало:

merged1 <- kik  %>% dplyr::group_by(variable) %>% dplyr::mutate(k = sum(!is.na(value)))
0 голосов
/ 26 мая 2020

Используйте сумму вместо colSums, так как вы суммируете только один столбец.

merged1 <- df %>% 
  group_by(variable) %>% 
  mutate(k = sum(!is.na(value)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...