计算 R 中数据框中每一列的百分位数
Calculate percentile for every column in a data frame in R
我有一个包含 3 个分类列和 40 个数值列的数据集。我想分别计算 40 个数字列中每个列的第 90 个百分位数。
以此数据框作为可重现的例子:
fruit = c("apple","orange","banana","berry") #1st col
ID = c(123,3453,4563,3235) #2nd col
price1 = c(3,5,10,20) #3rd col
price2 = c(5,7,9,2) #4th col
price3 = c(4,1,11,8) #5th col
df = data.frame(fruit,ID,price1,price2,price3) #combine into a dataframe
我想做这样的事情:calc_percentile = quantile(df[,3:5], probs = 0.90)
我正在寻找的输出是:
# Column 90thPercentile
# price1 17
# price2 8.4
# price3 10.1
考虑到我有 40 列,一一执行此操作不切实际。感谢您的帮助!
stack(lapply(df[3:5], quantile, prob = 0.9, names = FALSE))
# values ind
#1 17.0 price1
#2 8.4 price2
#3 10.1 price3
使用 dplyr
和 tidyr
:
df %>%
summarise_at(3:5, ~ quantile(., probs = 0.9)) %>%
gather("Column", "90thPercentile")
Column 90thPercentile
1 price1 17.0
2 price2 8.4
3 price3 10.1
我有一个包含 3 个分类列和 40 个数值列的数据集。我想分别计算 40 个数字列中每个列的第 90 个百分位数。
以此数据框作为可重现的例子:
fruit = c("apple","orange","banana","berry") #1st col
ID = c(123,3453,4563,3235) #2nd col
price1 = c(3,5,10,20) #3rd col
price2 = c(5,7,9,2) #4th col
price3 = c(4,1,11,8) #5th col
df = data.frame(fruit,ID,price1,price2,price3) #combine into a dataframe
我想做这样的事情:calc_percentile = quantile(df[,3:5], probs = 0.90)
我正在寻找的输出是:
# Column 90thPercentile
# price1 17
# price2 8.4
# price3 10.1
考虑到我有 40 列,一一执行此操作不切实际。感谢您的帮助!
stack(lapply(df[3:5], quantile, prob = 0.9, names = FALSE))
# values ind
#1 17.0 price1
#2 8.4 price2
#3 10.1 price3
使用 dplyr
和 tidyr
:
df %>%
summarise_at(3:5, ~ quantile(., probs = 0.9)) %>%
gather("Column", "90thPercentile")
Column 90thPercentile
1 price1 17.0
2 price2 8.4
3 price3 10.1