首页 > 解决方案 > 将列值划分为前 20% 和后 80% 时出错

问题描述

我有一个这样的向量:

Vec <- data.frame( Vec = c("70.0600", "8.5100", "5.8600", "399.9800", "9.0600", "78.8200", "71.4600") )

我想将上述值分为前 20% 和后 80%,结果应如下所示:

 Vec        Dec
 70.0600    Top_20
 .          .
 .          .
 5.8600     Bottom_80

我正在尝试这样的事情:

Vec$Quartile <- quantile(Vec$Vec, probs = c(0.20, 0.80))

但我得到了 50-50% 的数据值:

 sum( Vec$Quartile>20 )

我不确定我错在哪里?

标签: r

解决方案


像这样?

library(dplyr)

Vec <- data.frame(Vec = c(70.0600, 8.5100, 5.8600, 399.9800, 9.0600, 78.8200, 71.4600))

Vec %>%
  mutate(up = quantile(Vec, .8),
         part = ifelse(Vec > up, "Top_20", "Bottom_80"))

     Vec     up      part
1  70.06 77.348 Bottom_80
2   8.51 77.348 Bottom_80
3   5.86 77.348 Bottom_80
4 399.98 77.348    Top_20
5   9.06 77.348 Bottom_80
6  78.82 77.348    Top_20
7  71.46 77.348 Bottom_80

推荐阅读