R 在多个因子水平上计算大于百分位值的值的数量

R 在多个因子水平上计算大于百分位值的值的数量,r,dplyr,R,Dplyr,我有一个带有一组值和一个因子的数据框 df <- as.data.frame(matrix(sample(0:10, 1*30, replace=TRUE), ncol=1)) colnames(df)[1] <- "values" df$factor<- rep(c("Factor.A","Factor.B"), each = 15) df使用dplyr可以执行以下操作: library(dplyr) df %>% group_by(factor) %>%

我有一个带有一组值和一个因子的数据框

df <- as.data.frame(matrix(sample(0:10, 1*30, replace=TRUE), ncol=1))
colnames(df)[1] <- "values"
df$factor<- rep(c("Factor.A","Factor.B"), each = 15)

df使用
dplyr
可以执行以下操作:

library(dplyr)
df %>%
  group_by(factor) %>% 
  summarize(Percentile_75 = quantile(values,0.75),n_sup = sum(values > Percentile_75))

# # A tibble: 2 x 3
#       factor Percentile_75 n_sup
#        <chr>         <dbl> <int>
#   1 Factor.A           8.5     4
#   2 Factor.B           8.5     4
库(dplyr)
df%>%
分组依据(因子)%>%
汇总(百分位_75=分位数(值,0.75),n_sup=总和(值>百分位_75))
##tibble:2 x 3
#因子百分位数75 n
#                  
#1系数A 8.5 4
#2系数B 8.5 4

使用
dplyr
可以执行以下操作:

library(dplyr)
df %>%
  group_by(factor) %>% 
  summarize(Percentile_75 = quantile(values,0.75),n_sup = sum(values > Percentile_75))

# # A tibble: 2 x 3
#       factor Percentile_75 n_sup
#        <chr>         <dbl> <int>
#   1 Factor.A           8.5     4
#   2 Factor.B           8.5     4
库(dplyr)
df%>%
分组依据(因子)%>%
汇总(百分位_75=分位数(值,0.75),n_sup=总和(值>百分位_75))
##tibble:2 x 3
#因子百分位数75 n
#                  
#1系数A 8.5 4
#2系数B 8.5 4
A data.table方法:

   df <- as.data.frame(matrix(sample(0:10, 1*30, replace=TRUE), ncol=1))
   colnames(df)[1] <- "values"
   df$factor<- rep(c("Factor.A","Factor.B"), each = 15)

   library(data.table)
   df <- setDT(df)

   df[,P_75 := quantile(values, probs = 0.75), by = factor][
  values > P_75, .(unique(P_75),.N), by = factor
   ]

#      factor  V1 N
# 1: Factor.A 7.5 4
# 2: Factor.B 8.0 2
dfA data.table方法:

   df <- as.data.frame(matrix(sample(0:10, 1*30, replace=TRUE), ncol=1))
   colnames(df)[1] <- "values"
   df$factor<- rep(c("Factor.A","Factor.B"), each = 15)

   library(data.table)
   df <- setDT(df)

   df[,P_75 := quantile(values, probs = 0.75), by = factor][
  values > P_75, .(unique(P_75),.N), by = factor
   ]

#      factor  V1 N
# 1: Factor.A 7.5 4
# 2: Factor.B 8.0 2

df好的,我重新编辑了一遍,总结比我想象的要聪明:),现在删除我的其他评论,仅仅是为了计数,我想
df%>%groupby(factor)%%>%tally(values>quantile(values.75))
更惯用。。。但奇怪的是,它给出了不同的结果。好吧,我再次编辑,总结比我想象的要聪明:),现在删除我的其他评论,仅仅是计数,我想
df%>%groupby(factor)%%>%tally(values>quantile(values.75))
更惯用。。。但奇怪的是,它给出了不同的结果。通过构造,您将有
轮(n()*.25)
或其左右(取决于领带),通过构造,您将有
轮(n()*.25)
或其左右(取决于领带)