如何在 R 中汇总字符、因子和数值向量

How to summarize character, factors, and numeric vectors in R

我正在尝试使用 summarize_all 来计算每个 ID 的平均值。我可以成功地为 ID 列和我试图找到(速度)平均值的列执行此操作。但是,当我使用下面的代码时,所有其他列都作为 NA 返回。

第二个问题是一些 ID 有多个位置站点或 drivers。所以我需要保持 driver 的平均速度,但有多个行保持唯一的 driver 和位置(日期无关紧要)

我认为这可能是因为作为 NA 返回的列是 non-numeric。我尝试查看其他问题,但不喜欢回答发生这种情况的原因以及解决方法的问题。

我也试过使用 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)

我们可以将 'Speed' 替换为 'Speed' 的 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 将是对 non-numeric 列调用 mean 的结果。