如何在儲存在 R 資料框列中的逗號分隔字串中查詢唯一值的個數?


如果我們有包含重複值和唯一值的逗號分隔值,那麼我們可能希望找到每個逗號分隔值中唯一值的個數。要查詢儲存在 R 資料框列中的逗號分隔字串中的唯一值,我們可以使用 stringi 包的 stri_extract_all_regex 函式以及 sapply 函式。

檢視下面的示例以瞭解如何實現。

示例 1

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

x<-sample(c("3,2,3,4,5,4,3","5,5,6,7,8,6,8","3,2","5,9,8,0"),20,replace=TRUE)
df1<-data.frame(x)
df1

建立了以下資料框 -

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

要載入 stringi 包並在 x 的每個值中查詢唯一值的個數,請將以下程式碼新增到上述程式碼片段中 -

library(stringi)
df1$Unique_in_x<-sapply(stri_extract_all_regex(df1$x,"[0-9]+"),function(x) length(unique(x)))
df1

輸出

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

             x   Unique_in_x
1  5,5,6,7,8,6,8  4
2        5,9,8,0  4
3        5,9,8,0  4
4            3,2  2
5  5,5,6,7,8,6,8  4
6  3,2,3,4,5,4,3  4
7  3,2,3,4,5,4,3  4
8            3,2  2
9            3,2  2
10  5,5,6,7,8,6,8 4
11            3,2 2
12  5,5,6,7,8,6,8 4
13  5,5,6,7,8,6,8 4
14            3,2 2
15  5,5,6,7,8,6,8 4
16        5,9,8,0 4
17  5,5,6,7,8,6,8 4
18            3,2 2
19            3,2 2
20        5,9,8,0 4

示例 2

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

y<-sample(c("A,G,R,T,D","Y,I,H,H,F,E,L","T,W,E,E,E,D,S,R"),20,replace=TRUE)
df2<-data.frame(y)
df2

建立了以下資料框 -

             y
1     Y,I,H,H,F,E,L
2         A,G,R,T,D
3     Y,I,H,H,F,E,L
4     Y,I,H,H,F,E,L
5         A,G,R,T,D
6     Y,I,H,H,F,E,L
7     Y,I,H,H,F,E,L
8         A,G,R,T,D
9         A,G,R,T,D
10        A,G,R,T,D
11    Y,I,H,H,F,E,L
12    Y,I,H,H,F,E,L
13  T,W,E,E,E,D,S,R
14    Y,I,H,H,F,E,L
15        A,G,R,T,D
16  T,W,E,E,E,D,S,R
17  T,W,E,E,E,D,S,R
18        A,G,R,T,D
19        A,G,R,T,D
20    Y,I,H,H,F,E,L

要在 y 的每個值中查詢唯一值的個數,請將以下程式碼新增到上述程式碼片段中 -

df2$Unique_in_y<-sapply(stri_extract_all_regex(df2$y,"[A-Z]+"),function(x) length(unique(x)))
df2

輸出

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

               y   Unique_in_y
1    Y,I,H,H,F,E,L  6
2        A,G,R,T,D  5
3    Y,I,H,H,F,E,L  6
4    Y,I,H,H,F,E,L  6
5        A,G,R,T,D  5
6    Y,I,H,H,F,E,L  6
7    Y,I,H,H,F,E,L  6
8        A,G,R,T,D  5
9        A,G,R,T,D  5
10       A,G,R,T,D  5
11   Y,I,H,H,F,E,L  6
12   Y,I,H,H,F,E,L  6
13 T,W,E,E,E,D,S,R  6
14   Y,I,H,H,F,E,L  6
15       A,G,R,T,D  5
16 T,W,E,E,E,D,S,R  6
17 T,W,E,E,E,D,S,R  6
18       A,G,R,T,D  5
19       A,G,R,T,D  5
20   Y,I,H,H,F,E,L  6

更新於: 2021-11-22

437 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告