如何在存储在 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