当前位置: 首页 > 知识库问答 >
问题:

数据框:用匹配单元格的相应值填充矩阵

慕容典
2023-03-14

如果数据帧列中的单元格值匹配,我试图用"1"s填充相邻矩阵。“1”的位置基于同一行中的相应值。

更准确地说:数据帧pat1

ID PATID SUB
 1     2  2A
 2     2  2B 
 3     3  2C
 4     3  2D

我想填充矩阵单元格[2A,2B][2B,2A][2C,2D],和[2D,2C]在空矩阵patmat1与相应的行/cole. name与"1"起PATID[1]=PATID[2],和PATID[3]=PATID[4],分别。

所需的输出将是带有列名的矩阵(数据=c(0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0),nrow=4,byrow=T)

我找过了,但还没有找到方法。

共有1个答案

濮宇定
2023-03-14

这有帮助吗

library(reshape2)
 if(length(unique(pat1$PATID))==1) pat1$SUB2 <- rev(pat1$SUB)
acast(pat1, SUB~SUB2, value.var='PATID', length)
#   2A 2B
#2A  0  1
#2B  1  0

对于新的数据集,我们可以按“PATID”进行split,对单个list元素执行acast,并使用bdiag折叠它们。

library(Matrix)
patmat1[] <- as.matrix(bdiag(lapply(lst, function(x) 
        acast(transform(x, SUB2=rev(SUB)), SUB~SUB2, 
        value.var='PATID', length))))
patmat1
#   2A 2B 2C 2D
#2A  0  1  0  0
#2B  1  0  0  0
#2C  0  0  0  1
#2D  0  0  1  0

或者我们可以使用数据来实现这一点。表。我们转换数据。帧“到”数据。表'(setDT(pat1)),按“PATID”分组,创建“SUB2”作为“SUB”的rev,然后使用acastfromrestrape2将“long”格式更改为“wide”格式,并指定fun。聚合为长度。

library(data.table)
acast(setDT(pat1)[, SUB2:= rev(SUB), PATID], SUB~SUB2, 
                    value.var='PATID', length)
#   2A 2B 2C 2D
#2A  0  1  0  0
#2B  1  0  0  0
#2C  0  0  0  1
#2D  0  0  1  0
 类似资料:
  • 成品尺寸:99.00_99.00_99.00;展开尺寸:411.00_327.00;印刷:双面印刷;正面印颜色:多色 CMYK;反面印刷颜色:单色_青色;表面处理:哑胶;背面处理:无;预折:否;1;粘合:自动粘1处;纸张材质:单铜纸_350;包装服务:盒子扎皮筋;外箱套蛇皮袋:否;

  • 而且,当不为c1和c2设置任何CellValue时,实际上可以将它们的CellType设置为Numeric,突然之间代码又可以工作了。它在没有CTTable的情况下也可以工作。 有什么想法或变通办法吗?还是POI的一个bug(因为它尝试从任何单元格中获取字符串值,而不管它的单元格类型如何)?

  • 本文向大家介绍bootstrap table.js动态填充单元格数据的多种方法,包括了bootstrap table.js动态填充单元格数据的多种方法的使用技巧和注意事项,需要的朋友参考一下 bootstrap-table.js动态填充table单元格数据,总结了几种方法以适应各种需求,以下就简单介绍两种方法: 方法一:全部自动填充table 方法二:表头这一栏固定,自动填充主体部分<tbody>

  • 问题内容: 我目前正在针对Python 2.7使用openpyxl v2.2.2,我想为单元格设置颜色。我已经使用以下进口 以下是我尝试使用的代码: 但出现以下错误: 关于如何使用openpyxl设置单元格A1(或其他单元格)颜色的想法? 问题答案: 我认为问题在于您正在尝试将填充对象分配给样式。 应该工作正常。

  • 问题内容: 我已经看过这个问题并在Google上搜索了一下,但到目前为止没有任何效果。我认为现在是2010年(这些问题/答案很旧,而且还没有答案),我们有了CSS3!有什么方法可以使用CSS使div填充整个表格单元格的宽度和高度吗? 我不知道单元格的宽度和/或高度会提前多少,并且将div的宽度和高度设置为100%无效。 另外,我需要div的原因是因为我需要将某些元素绝对定位在单元格之外,并且不适用

  • 我在R中有一个数据帧,我想根据两个列表中的行和列的特定匹配来设置值。 以下是我必须遵循的流程。我有一个数据框,如下所示 我有一个函数,它将列名作为输入,并返回一个与该列名关联的值。例如:一些_函数(“test.var1.t1”)可能返回10的值。 我有一些行名和列名的列表。我需要检查列表中的每个行名称和列名,将它们匹配在一起,计算匹配列的函数,并将值发布到相应的单元格中的数据框中。例如 行名称列表