我的 data.frame 中有一个名为Score:
DF$Score<-(1.2,2,2,3.2,4.4,4.5,2.5,6.7,8.9,4.8)
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含该列三分位数的新列(级别称为低、中和高)。在 R 中如何做到这一点?我知道有一个quantile函数,但我想在这里制作三分位数。
DF = data.frame(Score = c(1.2,2,2,3.2,4.4,4.5,2.5,6.7,8.9,4.8))
# Find tertiles
vTert = quantile(DF$Score, c(0:3/3))
# classify values
DF$tert = with(DF,
cut(Score,
vTert,
include.lowest = T,
labels = c("Low", "Medium", "High")))
# The result
> DF
Score tert
1 1.2 Low
2 2.0 Low
3 2.0 Low
4 3.2 Medium
5 4.4 Medium
6 4.5 Medium
7 2.5 Low
8 6.7 High
9 8.9 High
10 4.8 High
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用dplyr:
df %>%
mutate(tertiles = ntile(Score, 3)) %>%
mutate(tertiles = if_else(tertiles == 1, 'Low', if_else(tertiles == 2, 'Medium', 'High'))) %>%
arrange(Score)
# Score tertiles
# 1 1.2 Low
# 2 2.0 Low
# 3 2.0 Low
# 4 2.5 Low
# 5 3.2 Medium
# 6 4.4 Medium
# 7 4.5 Medium
# 8 4.8 High
# 9 6.7 High
# 10 8.9 High
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12339 次 |
| 最近记录: |