从R中的数据帧创建连接矩阵

姆沃伯特

我有一些这种形式的数据:

> agreers <- read.csv('agreers.csv')
> attach(agreers)
> head(agreers)
        wain1       wain2 count
1   Founder36 Mnist10_269   673
2    Founder3  Mnist10_19   665
3 Mnist10_140 Mnist10_257   663
4    Founder1   Founder15   659
5   Founder21   Founder25   654
6   Founder15   Founder32   654

我创建的数据是wain1 <= wain2,因此每对仅在表中出现一次。因此,这将是无向图。

我想创建一个连接矩阵,如下所示:

          Mnist10_269 Mnist10_19 Mnist10_257 . . .
Founder36    673           ?          ?
Founder3       ?         665          ?
Mnist10_140    ?           ?        663
  . . .

如果中没有任何数据,则?为零agreers所以这是我尝试过的:

> mat = matrix(0, nrow = length(unique(wain1)), ncol = length(unique(wain2)))
> rownames(mat) = unique(wain1)
> colnames(mat) = unique(wain2)
> for(i in as.integer(rownames(agreers))) mat[wain1[i], wain2[i]] = count[i]

它可以执行一些操作,即mat使用数字进行更新,但是数字位置不正确!例如,我希望它返回673

> mat["Founder36","Mnist10_269"]
[1] 0

编辑:这是数据文件的更多内容,以显示“因素中的重复水平”问题。请注意,Mnist10_140在第一列中出现两次,但在第二列中具有不同的值。

wain1,wain2,count
Founder36,Mnist10_269,673
Founder3,Mnist10_19,665
Mnist10_140,Mnist10_257,663
Founder1,Founder15,659
Founder21,Founder25,654
Founder15,Founder32,654
Mnist10_140,Mnist10_84,643

当仅处理数据的那个子集时,我得到警告:

> agreers <- read.csv('temp.csv')
> connections <- xtabs(count ~ factor(wain1, levels = wain1) + factor(wain2, levels = wain2), agreers)
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
裁员

如果您喜欢基础R,可以使用 table

df <- read.table(header=TRUE, text='   wain1       wain2 count
   Founder36 Mnist10_269   673
    Founder3  Mnist10_19   665
 Mnist10_140 Mnist10_257   663
    Founder1   Founder15   659
   Founder21   Founder25   654
   Founder15   Founder32   654')

tab <- with(df,table(factor(wain1, levels=unique(wain1)),
                   factor(wain2, levels=unique(wain2))))
tab[which(tab == 1)] = df$count
tab

              Mnist10_269 Mnist10_19 Mnist10_257 Founder15 Founder25 Founder32
  Founder36           673          0           0         0         0         0
  Founder3              0        665           0         0         0         0
  Mnist10_140           0          0         663         0         0         0
  Founder1              0          0           0       659         0         0
  Founder21             0          0           0         0       654         0
  Founder15             0          0           0         0         0       654

编辑

正如@DavidArenburg建议的那样,您还可以使用 xtabs

xtabs(count ~ factor(wain1, levels = unique(wain1)) + factor(wain2, levels = unique(wain2)), df)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从R中的数据帧创建栅格?

来自分类Dev

R中数据帧对的距离矩阵

来自分类Dev

将数据帧转换为R中的扩展矩阵

来自分类Dev

R中的基本矩阵/数据帧算法

来自分类Dev

R中数据帧的连接列表

来自分类Dev

如何从R中的数据帧创建不同格式的矩阵?

来自分类Dev

在R计算共享成员资格中创建连接矩阵

来自分类Dev

在R中创建一系列连接矩阵

来自分类Dev

整理数据帧到R中的矩阵

来自分类Dev

从R中的正则匹配创建数据帧

来自分类Dev

连接R中数据帧的每个元素

来自分类Dev

R中的矩阵/数据帧循环问题

来自分类Dev

从R中的数据帧创建成对值的平方矩阵

来自分类Dev

将xyz数据帧转换为基数R中的矩阵

来自分类Dev

从R中的向量/矩阵或数据帧中查找索引

来自分类Dev

使用apply从R中的数据帧创建邻接矩阵列表

来自分类Dev

R中数据帧对的距离矩阵

来自分类Dev

在R中连接矩阵

来自分类Dev

将数据帧转换为R中的扩展矩阵

来自分类Dev

从R中的数据帧创建连接矩阵

来自分类Dev

从R中的不同数据帧创建表

来自分类Dev

R:根据数据帧变量中的出现情况填充矩阵

来自分类Dev

从 R 中的数据框创建因子矩阵

来自分类Dev

使用 R for 循环从数据帧创建不同的矩阵

来自分类Dev

R:循环对存储在矩阵中的数据帧执行 ks 测试

来自分类Dev

如何从 Python 中的 3 列数据帧创建矩阵

来自分类Dev

基于 R 中的系数数据帧的矩阵的加权元素

来自分类Dev

将相关矩阵转换为 R 中的数据帧

来自分类Dev

使用均值计算从数据帧创建矩阵