r - 在R中查找矩阵中元素的频率
问题描述
我有 7 行 4 列的数据集“数据”,如下所示:
var1 var2 var3 var4
A C
A C B
B A C D
D B
B
D B
B C
我想根据我拥有的数据创建下表“Mat”:
A B C D
1 1
1 1 1
1 1 1 1
1 1
1
1 1
1 1 1
基本上,我从原始数据中获取了唯一元素并创建了一个矩阵“Mat”,其中 Mat 中的行数=Data 中的行数,“Mat”中的列数=Data 中唯一元素的数量(即 A , B, C, D)
我在 R 中编写了以下代码:
rule <-c("A","B","C","D")
mat<-matrix(, nrow = dim(data)[1], ncol = dim(rule)[1])
mat<-data.frame(mat)
x<-rule[,1]
nm<-as.character(x)
names(mat)<-nm
n_data<-dim(data)[1]
for(i in 1:n_data)
{
for(j in 2:dim(data)[2])
{
for(k in 1:dim(mat)[2])
{
ifelse(data[i,j]==names(mat)[k],mat[i,k]==1,0)
}
}
}
我在“垫子”中得到了所有的 NA。此外,运行时间太长,因为在我的原始数据集中,“Mat”中有 20,000 行和 100 列。
任何建议将不胜感激。谢谢!
解决方案
通过使用 table
和rep
table(rep(1:nrow(df),dim(df)[2]),unlist(df))
A B C D
1 1 0 1 0
2 1 1 1 0
3 1 1 1 1
4 0 1 0 1
5 0 1 0 0
6 0 1 0 1
7 0 1 1 0
推荐阅读
- c++ - Arduino我如何编辑静态无符号短?
- android - Android布局未与顶部对齐
- java - 应用插件:“com.google.secrets_gradle_plugin”版本“0.4”给我一个错误
- vue.js - postcss-svgo:解析 SVG 时出错:属性名称无效
- c# - 如何调用返回 1 行的存储过程?
- javascript - 用JS拖拽图片
- macos - 从 Mac 上的 Visual Studio 访问 Azure SQL 数据库的问题
- laravel - Nova Laravel 显示图像
- python - 如何从字符串中的每一行中删除最后一个逗号?
- python - 如何在 Python / 记忆游戏中隐藏图片并通过按钮重新出现