阅读 145

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


创建以下数据框 -


         x1  5,5,6,7,8,6,82        5,9,8,03        5,9,8,04            3,25  5,5,6,7,8,6,86  3,2,3,4,5,4,37  3,2,3,4,5,4,38            3,29            3,210 5,5,6,7,8,6,811           3,212 5,5,6,7,8,6,813 5,5,6,7,8,6,814           3,215 5,5,6,7,8,6,816       5,9,8,017 5,5,6,7,8,6,818           3,219           3,220       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_x1  5,5,6,7,8,6,8  42        5,9,8,0  43        5,9,8,0  44            3,2  25  5,5,6,7,8,6,8  46  3,2,3,4,5,4,3  47  3,2,3,4,5,4,3  48            3,2  29            3,2  210  5,5,6,7,8,6,8 411            3,2 212  5,5,6,7,8,6,8 413  5,5,6,7,8,6,8 414            3,2 215  5,5,6,7,8,6,8 416        5,9,8,0 417  5,5,6,7,8,6,8 418            3,2 219            3,2 220        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


创建以下数据框 -


             y1     Y,I,H,H,F,E,L2         A,G,R,T,D3     Y,I,H,H,F,E,L4     Y,I,H,H,F,E,L5         A,G,R,T,D6     Y,I,H,H,F,E,L7     Y,I,H,H,F,E,L8         A,G,R,T,D9         A,G,R,T,D10        A,G,R,T,D11    Y,I,H,H,F,E,L12    Y,I,H,H,F,E,L13  T,W,E,E,E,D,S,R14    Y,I,H,H,F,E,L15        A,G,R,T,D16  T,W,E,E,E,D,S,R17  T,W,E,E,E,D,S,R18        A,G,R,T,D19        A,G,R,T,D20    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_y1    Y,I,H,H,F,E,L  62        A,G,R,T,D  53    Y,I,H,H,F,E,L  64    Y,I,H,H,F,E,L  65        A,G,R,T,D  56    Y,I,H,H,F,E,L  67    Y,I,H,H,F,E,L  68        A,G,R,T,D  59        A,G,R,T,D  510       A,G,R,T,D  511   Y,I,H,H,F,E,L  612   Y,I,H,H,F,E,L  613 T,W,E,E,E,D,S,R  614   Y,I,H,H,F,E,L  615       A,G,R,T,D  516 T,W,E,E,E,D,S,R  617 T,W,E,E,E,D,S,R  618       A,G,R,T,D  519       A,G,R,T,D  520   Y,I,H,H,F,E,L  6


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐