如何在 R 資料框中查詢 ID 對應的頻率?


為了在 R 資料框中查詢 ID 對應的頻率,我們可以在定義 ID 後使用 dplyr 包的 summarise 函式,並使用 group_by 函式,同時將我們想要查詢頻率的列也放在 group_by 函式內部。

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

示例 1

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

ID<-sample(1:4,20,replace=TRUE)
Sales<-sample(1:10,20,replace=TRUE)
df1<-data.frame(ID,Sales)
df1

建立了以下資料框 -

   ID Sales
1  4   4
2  1   3  
3  4   9
4  4   8
5  2   6
6  1   9
7  2   8
8  1   8
9  1   6
10 1   1
11 4   6
12 2   9
13 2  10
14 2   6
15 3   2
16 3   9
17 4   6
18 1   8
19 2  10
20 2   1

要載入 dplyr 包並在 df1 中建立 ID 對應的頻率列,請將以下程式碼新增到上述程式碼片段中 -

library(dplyr)
df1%>%group_by(ID,Sales)%>%summarise(Frequency=n())
`summarise()` regrouping output by 'ID' (override with `.groups` argument)
# A tibble: 16 x 3
# Groups: ID [4]

輸出

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

   ID  Sales Frequency
  <int> <int> <int>
1  1    1      1
2  1    3      1
3  1    6      1
4  1    8      2
5  1    9      1
6  2    1      1
7  2    6      2
8  2    8      1
9  2    9      1
10 2   10      2
11 3    2      1
12 3    9      1
13 4    4      1
14 4    6      2
15 4    8      1
16 4    9      1

示例 2

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

ID<-sample(0:2,20,replace=TRUE)
Group<-sample(c("I","II","III"),20,replace=TRUE)
df2<-data.frame(ID,Group)
df2

建立了以下資料框 -

  ID Group
1  2 III
2  0   I
3  0   I
4  0   I
5  2 III
6  0  II
7  2  II
8  2  II
9  1 III
10 2   I
11 1  II
12 1   I
13 1   I
14 1   I
15 2  II
16 0  II
17 1   I
18 2   I
19 2   I
20 0 III

要在 df2 中建立 ID 對應的頻率列,請將以下程式碼新增到上述程式碼片段中 -

df2%>%group_by(ID,Group)%>%summarise(Frequency=n())
`summarise()` regrouping output by 'ID' (override with `.groups` argument)
# A tibble: 9 x 3
# Groups: ID [3]

輸出

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

  ID Group Frequency
 <int><chr> <int>
1  0    I    3
2  0   II    2
3  0  III    1
4  1    I    4
5  1   II    1
6  1  III    1
7  2    I    3
8  2   II    3
9  2  III    2

更新於: 2021-11-11

444 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.