r - 将列值划分为前 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 )
我不确定我错在哪里?
解决方案
像这样?
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
推荐阅读
- excel - 如何拆分字符串并将唯一值存储到数组中
- sql - SQL Server 通过“WITH”语句更新并加入
- ios - 注册以接收远程 CloudKit 更改的通知不起作用
- java - 如何使用 android studio 在 RSS 提要上编码希腊字母
- neural-network - 人工神经网络中的记忆
- .net - Azure 文件服务客户端/对象是线程安全的吗?它们可以被缓存吗?
- python - AWS boto3 - 如何显示图像而不是强制下载
- terminal - 运行终端并在启动时输入命令(Raspberry Pi)
- batch-file - DOS下不能输入变量
- java - liquibase中有替换功能吗?