如何在 R 中將連續變數分成多個組?


當我們希望基於連續變數的某些特徵比較分類變數的不同級別時,就需要對連續變數進行拆分。例如,根據薪資建立薪資組,然後使用方差分析或 Kruskal-Wallis 檢驗對這些組進行比較。要將連續變數分成多個組,我們可以使用 Hmisc 包的 cut2 函式 -

示例

 即時演示

考慮以下資料幀 -

set.seed(2)
ID<-1:25
Salary<-sample(20:50,25,replace=TRUE)
df<-data.frame(ID,Salary)
df

輸出

ID Salary
1 1 40
2 2 34
3 3 25
4 4 25
5 5 27
6 6 36
7 7 48
8 8 36
9 9 31
10 10 48
11 11 28
12 12 37
13 13 30
14 14 20
15 15 22
16 16 41
17 17 35
18 18 37
19 19 38
20 20 42
21 21 50
22 22 27
23 23 26
24 24 20
25 25 41

根據薪資對 df 進行拆分,併為包含五個組的薪酬組建立新列 -

library(Hmisc)
df$Salary_Group<-as.numeric(cut2(df$Salary, g=5))
df
ID Salary Salary_Group
1 1 40 4
2 2 34 3
3 3 25 1
4 4 25 1
5 5 27 2
6 6 36 3
7 7 48 5
8 8 36 3
9 9 31 3
10 10 48 5
11 11 28 2
12 12 37 4
13 13 30 2
14 14 20 1
15 15 22 1
16 16 41 4
17 17 35 3
18 18 37 4
19 19 38 4
20 20 42 5
21 21 50 5
22 22 27 2
23 23 26 2
24 24 20 1
25 25 41 4

根據薪資對 df 進行拆分,併為包含三個組的薪酬組建立新列 -

df$Salary_Group<-as.numeric(cut2(df$Salary, g=3))
df
ID Salary Salary_Group
1 1 40 3
2 2 34 2
3 3 25 1
4 4 25 1
5 5 27 1
6 6 36 2
7 7 48 3
8 8 36 2
9 9 31 2
10 10 48 3
11 11 28 1
12 12 37 2
13 13 30 2
14 14 20 1
15 15 22 1
16 16 41 3
17 17 35 2
18 18 37 2
19 19 38 3
20 20 42 3
21 21 50 3
22 22 27 1
23 23 26 1
24 24 20 1
25 25 41 3
df$Salary_Group
[1] 3 2 1 1 1 2 3 2 2 3 1 2 2 1 1 3 2 2 3 3 3 1 1 1 3

這裡,群組大小不同,因為樣本大小為 25,不是 3 的倍數。

更新日期:2020-08-21

678 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告