如何在 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
的结果。
我正在尝试使用 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
的结果。