r - 逗号分隔的字符串向量到矩阵
问题描述
一个小时以来,我一直在研究这个问题,感觉就像是撞到了墙上:我想将逗号分隔的字符串向量转换为矩阵。
我有一个像这样的向量:
'ABC,DFGH,IJ'
'KLMN,OP,DFGH,QR'
'ST,ABC'
我想得到一个矩阵
ABC DFGH IJ KLMN OP QR ST
1 1 1 0 0 0 0
0 1 0 1 1 1 0
1 0 0 0 0 0 1
样本数据:
myvec<-c('ABC,DFGH,IJ','KLMN,OP,DFGH,QR','ST,ABC')
Base R 的答案也很受欢迎。对于一些更大的数据集,我可能再次需要这个技巧。
解决方案
另一个基础 R 解决方案:
> myvec<-c('ABC,DFGH,IJ','KLMN,OP,DFGH,QR','ST,ABC')
> mv <- strsplit(myvec,",")
> u <- unique(unlist(mv))
> t(sapply(mv, function(x) u %in% x)*1)
# output without colnames
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1 1 1 0 0 0 0
[2,] 0 1 0 1 1 1 0
[3,] 1 0 0 0 0 0 1
> r <- t(sapply(mv, function(x) u %in% x)*1)
# adding colnames
> colnames(r) <- u
> r
ABC DFGH IJ KLMN OP QR ST
[1,] 1 1 1 0 0 0 0
[2,] 0 1 0 1 1 1 0
[3,] 1 0 0 0 0 0 1
推荐阅读
- regex - 在 MongoDBRepository 上使用 Springboot Query 注释时如何转义单引号/撇号
- c# - 带有 -RedirectStandardOutput 的 powershell 启动进程挂起 powershell 控制台
- firebase - 如何获取 id 包含特定子字符串的所有元素?
- node.js - 尽管有文档,但类方法的函数重载是编译器错误
- flutter - 最后一次按下浮动操作按钮时更改屏幕
- c++ - std::unordered_map 的桶数意外增长
- javascript - 应用程序的 html 加载,但使用 angular 构建的 js 函数被无限期卡住加载
- wordpress - Wordpress:将触发“新页面”触发器之前的挂钩
- flutter - icon_fonts 在我的颤振应用程序中不起作用
- mariadb - 如何使用 SQL 和多重连接或合并它们