我在r
中有以下数据框No. Key Category
1 ABC123 0R1D
2 ABC567 0R1D
3 DEF444 1R1D
4 FRT433 1R1D
5 FRT433 1R1D
6 TYU412 2R2D
7 BEC123 0R1D
8 BCY567 0R1D
9 DEO444 1R1D
10 FRJ433 1R1D
11 FRK433 1R1D
12 TYL412 2R2D
我希望在所有类别和4个相同的分位数中找到唯一键。 我在R
做跟进truck_quartile <- df %>%
group_by(Category) %>%
summarise(No_of_trailers = n_distinct(key)) %>%
do(data.frame(t(quantile(.$No_of_trailers, probs = c(0.25, 0.50, 0.75, 1))))) %>%
as.data.frame()
但它只给我一行,因为我在分位数之前总结它。
答案 0 :(得分:1)
正如评论中所提到的,您将只获得一个分位数矢量,其中“独特的车辆数量属于不同的类别”,如预期的那样。以下是您想要计算每个独特车辆在每个类别中出现的次数的分位数的情况。
library(dplyr)
truck_quartile <- df %>%
group_by(Category, Key) %>%
summarize(No_of_trailers = n()) %>%
group_by(Category) %>%
do(data.frame(t(quantile(.$No_of_trailers, probs = c(0.25, 0.50, 0.75, 1))))) %>%
as.data.frame() %>%
setNames(c("Category", "25%", "50%", "75%", "100%"))
原始df的结果:
Category 25% 50% 75% 100%
1 0R1D 1 1 1 1
2 1R1D 1 1 1 2
3 2R2D 1 1 1 1
您原来的df
有点不幸,因为它只有一辆车在同一类别中有重复项。因此,我通过替换df_long
来创建df
。
结果df_long
:
Category 25% 50% 75% 100%
1 0R1D 1 3 4 5
2 1R1D 3 4 6 11
3 2R2D 1 2 2 4
注意:仅使用数字和特殊符号命名变量可能不是一个好主意,但如果您只想要一个好看的表而没有实际使用这些列进行进一步计算,那就没问题了。
数据:强>
library(data.table)
df = fread("No. Key Category
1 ABC123 0R1D
2 ABC567 0R1D
3 DEF444 1R1D
4 FRT433 1R1D
5 FRT433 1R1D
6 TYU412 2R2D
7 BEC123 0R1D
8 BCY567 0R1D
9 DEO444 1R1D
10 FRJ433 1R1D
11 FRK433 1R1D
12 TYL412 2R2D")
set.seed(123)
df_long = data.frame(Key = sample(df$Key, 100, replace = TRUE),
Category = sample(df$Category, 100, replace = TRUE))