Как суммировать символ, факторы и числовые векторы в R - PullRequest
1 голос
/ 21 мая 2019

Я пытаюсь использовать sumrize_all, чтобы найти среднее значение каждого идентификатора.Я могу сделать это успешно для столбца идентификатора и столбца, для которого я пытаюсь найти среднее значение (скорость).Однако, когда я использую приведенный ниже код, все остальные столбцы возвращаются как NA.

Вторая проблема заключается в том, что некоторые идентификаторы имеют несколько местоположений сайтов или драйверов.Поэтому мне нужно сохранить усредненную по драйверу скорость, но иметь несколько строк, которые поддерживают уникальный драйвер и местоположение (дата не имеет значения)

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

Я также пытался использовать функцию aggregate (), но то же самое происходит.

Это код, который я сейчас использую:

library(dplyr)
avg <- bind %>%
group_by(ID) %>%
summarize_all(mean)

Вот так выглядят мои данные:

ID Speed Location Driver Date
2  100     a        1     M
2  145     a        1     M
5  155     b        1     M
4  100     a        2     T
3  135     b        2     T
3  156     b        3     T
4  167     b        3     W

Вот как бы я хотел, чтобы окончательный набор данных выглядел:

ID Speed Location Driver Date
2  122.5   a        1     M
5  155     b        1     M
4  133     a        2     T
4  133     b        3     W
3  145.5   b        2     T
3  145.5   b        3     T

Пока мой результат выглядит так:

ID Speed Location Driver Date
2  122.5   NA      NA     NA
5  155     NA      NA     NA
4  133     NA      NA     NA
4  133     NA      NA     NA
3  145.5   NA      NA     NA
3  145.5   NA      NA     NA

с кодом ошибки:

There were 50 or more warnings (use warnings() to see the first 50)

1 Ответ

0 голосов
/ 21 мая 2019

Мы могли бы заменить «Скорость» на mean «Скорости» и затем получить distinct строк

library(dplyr)
bind %>%
    group_by(ID) %>%
    mutate(Speed = mean(Speed)) %>%
    distinct()
# A tibble: 6 x 5
# Groups:   ID [4]
#     ID Speed Location Driver Date 
#  <int> <dbl> <chr>     <int> <chr>
#1     2  122. a             1 M    
#2     5  155  b             1 M    
#3     4  134. a             2 T    
#4     3  146. b             2 T    
#5     3  146. b             3 T    
#6     4  134. b             3 W    

NA в других столбцах будет результатом вызова mean для нечисловых столбцов.

...