Mar*_*ayo 1 group-by r percentile dataframe dplyr
我想计算 data.frame 中的组的五分位数,例如:
df <- data.frame(x=1:100, y=c(rep("A", 50), rep("B", 50)))
Run Code Online (Sandbox Code Playgroud)
使用ntile()函数和group_byfrom dplyr,我想我可以得到分组的五分位数,比如这里。但是,从表中可以看出,五分位数是针对整个数据集计算的。我希望得到的结果,其中有10每个五分之一的A和B在这种情况下。
df$z <- df %>% group_by(y) %>% mutate(z = ntile(x, 5)) %>% pull(z)
table(df$y, df$z)
1 2 3 4 5
A 20 20 10 0 0
B 0 0 10 20 20
Run Code Online (Sandbox Code Playgroud)
确保开始一个新的 R 会话并尝试以下操作:
library(dplyr)
df <- data.frame(x=1:100, y=c(rep("A", 50), rep("B", 50))) %>%
group_by(y) %>% mutate(z = ntile(x, 5))
table(df$y, df$z)
1 2 3 4 5
A 10 10 10 10 10
B 10 10 10 10 10
Run Code Online (Sandbox Code Playgroud)
此外,dplyr另一种方法table是count:
count(df, y, z)
Run Code Online (Sandbox Code Playgroud)