Устранить NA в каждой группе - PullRequest
2 голосов
/ 24 октября 2019

Я получил строки, в которых есть NA, соответствующие столбцу, который был удален, и я хочу избавиться от этих NA. Это перевернуло бы приведенный ниже пример df с трех строк на одну и оставил бы один набор переменных для каждой группы.

df <- data.frame(group = c("a", "a", "a"), var1 = c(1, NA, NA), var2 = c(NA, 4, NA), var3 = c(NA, NA, 
2), var4 = c(1, NA, NA), var5 = c(NA, 4, NA), var6 = c(NA, NA, 2), var7 = c(1, NA, NA), 
var8 = c(NA, 4, NA), var3 = c(NA, NA, 2))    

Я знаю, как избавиться от целых строк с NA или столбцов с NA, но я не уверен, как это свернуть.

Ответы [ 2 ]

4 голосов
/ 24 октября 2019

Исходя из примера, это можно сделать с помощью summarise_all, при условии, что для каждого столбца в каждой группе имеется только один элемент, отличный от NA,

library(dplyr)
df %>%
   group_by(group) %>%
   summarise_all(na.omit)
# A tibble: 1 x 10
#  group  var1  var2  var3  var4  var5  var6  var7  var8 var3.1
#  <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
#1 a         1     4     2     1     4     2     1     4      2
1 голос
/ 24 октября 2019

Один base R параметр может быть следующим:

aggregate(. ~ group, 
          FUN = function(x) sum(x, na.rm = TRUE), 
          na.action = na.pass, 
          data = df)

  group var1 var2 var3 var4 var5 var6 var7 var8 var3.1
1     a    1    4    2    1    4    2    1    4      2

Предполагается, что в каждой группе имеется только одно значение, отличное от NA, для каждой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...