在 R 資料框中建立三個分類列的交叉表。


要為三個分類列建立交叉表,我們可以使用 xtabs 函式。xtabs 函式將為兩列中的每個類別建立列聯表,並且每個列聯表都將為第三列中的類別建立。

檢視下面的示例以瞭解如何操作。

示例 1

以下程式碼片段建立了一個示例資料框 -

df1<-data.frame(Status=c("Sold", "Available", "Available", "Sold", "Sold",
"In Queue", "In Queue", "Available", "Sold", "In Queue"), Gender = c("Female",
"Male", "Male", "Female", "Female", "Female", "Male", "Female", "Female",
"Female"), Confirm=c("No", "Yes", "No", "Yes", "No", "Yes", "Yes", "Yes",
"Yes", "No"))
df1

建立了以下資料框

 Status     Gender Confirm
1 Sold      Female  No
2 Available Male    Yes
3 Available Male    No
4 Sold      Female  Yes
5 Sold      Female  No
6 In Queue  Female  Yes
7 In Queue  Male    Yes
8 Available Female  Yes
9 Sold      Female  Yes
10 In Queue Female  No

要為上面建立的資料框中 df1 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df1<-data.frame(Status=c("Sold", "Available", "Available", "Sold", "Sold",
"In Queue", "In Queue", "Available", "Sold", "In Queue"), Gender = c("Female",
"Male", "Male", "Female", "Female", "Female", "Male", "Female", "Female",
"Female"), Confirm=c("No", "Yes", "No", "Yes", "No", "Yes", "Yes", "Yes",
"Yes", "No"))
xtabs(~Confirm+Gender+Status,data=df1)
, , Status = Available

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

    Gender
Confirm Female Male
 No       0     1
Yes       1     1

要為上面建立的資料框中 df1 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df1<-data.frame(Status=c("Sold", "Available", "Available", "Sold", "Sold",
"In Queue", "In Queue", "Available", "Sold", "In Queue"), Gender = c("Female",
"Male", "Male", "Female", "Female", "Female", "Male", "Female", "Female",
"Female"), Confirm=c("No", "Yes", "No", "Yes", "No", "Yes", "Yes", "Yes",
"Yes", "No"))
xtabs(~Confirm+Gender+Status,data=df1)
, , Status = In Queue

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

   Gender
Confirm Female Male
 No       1    0
 Yes      1    1

要為上面建立的資料框中 df1 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df1<-data.frame(Status=c("Sold", "Available", "Available", "Sold", "Sold",
"In Queue", "In Queue", "Available", "Sold", "In Queue"), Gender = c("Female",
"Male", "Male", "Female", "Female", "Female", "Male", "Female", "Female",
"Female"), Confirm=c("No", "Yes", "No", "Yes", "No", "Yes", "Yes", "Yes",
"Yes", "No"))
xtabs(~Confirm+Gender+Status,data=df1)
, , Status = Sold

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

Gender
Confirm Female Male
   No     2    0
   Yes    2    0

示例 2

以下程式碼片段建立了一個示例資料框 -

df2<-
data.frame(Class=sample(c("I","II","III","IV"),20,replace=TRUE),Group=sample(c(
"G1","G2","G3"),20,replace=TRUE),Rank=sample(1:5,20,replace=TRUE))
df2

建立了以下資料框

  Class Group Rank
1 I     G2    3
2 III   G2    2
3 IV    G2    3
4 I     G3    4
5 I     G1    3
6 IV    G1    1
7 IV    G2    3
8 II    G1    1
9 III   G1    1
10 I    G2    2
11 IV   G1    1
12 I    G2    1
13 IV   G3    1
14 I    G2    1
15 II   G2    3
16 III  G1    4
17 I    G2    2
18 IV   G2    4
19 I    G2    1
20 I    G1    1

要為上面建立的資料框中 df2 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df2<-
data.frame(Class=sample(c("I","II","III","IV"),20,replace=TRUE),Group=sample(c(
"G1","G2","G3"),20,replace=TRUE),Rank=sample(1:5,20,replace=TRUE))
xtabs(~Rank+Group+Class,data=df2)
, , Class = I

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

Group
Rank G1 G2 G3
  1   1  3  0
  2   0  2  0
  3   1  1  0
  4   0  0  1

要為上面建立的資料框中 df2 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df2<-
data.frame(Class=sample(c("I","II","III","IV"),20,replace=TRUE),Group=sample(c(
"G1","G2","G3"),20,replace=TRUE),Rank=sample(1:5,20,replace=TRUE))
xtabs(~Rank+Group+Class,data=df2)
, , Class = II

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

Group
Rank G1 G2 G3
1    1   0  0
2    0   0  0
3    0   1  0
4    0   0  0

要為上面建立的資料框中 df2 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df2<-
data.frame(Class=sample(c("I","II","III","IV"),20,replace=TRUE),Group=sample(c(
"G1","G2","G3"),20,replace=TRUE),Rank=sample(1:5,20,replace=TRUE))
xtabs(~Rank+Group+Class,data=df2)
, , Class = III

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

Group
Rank G1 G2 G3
 1    1  0  0
 2    0  1  0
 3    0  0  0
 4    1  0  0

要為上面建立的資料框中 df2 中的資料建立交叉表,請將以下程式碼新增到上面的程式碼片段中 -

df2<-
data.frame(Class=sample(c("I","II","III","IV"),20,replace=TRUE),Group=sample(c(
"G1","G2","G3"),20,replace=TRUE),Rank=sample(1:5,20,replace=TRUE))
xtabs(~Rank+Group+Class,data=df2)
, , Class = IV

輸出

如果您將所有上面給出的程式碼片段作為單個程式執行,它將生成以下輸出 -

    Group
Rank G1 G2 G3
1    2   0  1
2    0   0  0
3    0   2  0
4    0   1  0

更新於: 2021年11月2日

1K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.