示例数据集如下:
| var1| var2| var3|
| --|--|--|
| 一| 1 | 2 |
| B| 2 | 3 |
如果var 1 = a的var 2 = var 1 = B的var 3,我想将var 1 = a的记录链接到var 1 = B。
因此,示例数据集将变成这样:
| var1| var2| var3|
| --|--|--|
| 一| 1 | 3 |
另外,如果var 1 = b
之后的下一行也是b
,那么记录也将被链接,例如:
| var1| var2| var3|
| --|--|--|
| 一| 1 | 2 |
| B| 2 | 3 |
| B| 3 | 5 |
| B| 7 | 9 |
| C| 5 | 9 |
我想要的结果:
| var1| var2| var3|
| --|--|--|
| 一| 1 | 5 |
| B| 7 | 9 |
| C| 5 | 9 |
有什么方法可以做到这一点吗?谢谢你,谢谢!
根据zx 8754的评论,可以使用igraph
来为这个问题进行数据清理。然而,当我试图使用
library(igraph)
df = structure(list(var1 = c("a", "b", "b", "b", "c"), var2 = c(1L,
2L, 3L, 7L, 5L), var3 = c(2L, 3L, 5L, 9L, 9L)), class = "data.frame", row.names = c(NA,
-5L))
g <- graph_from_data_frame(df)
图中只显示了var2
,忽略了var3
:
问题
1.如果a
和b
的名称不相同,如何连接它们?
1.如何在图中添加一个变量(var 3)?
2条答案
按热度按时间qij5mzcb1#
qacovj5a2#
首先:我对使用
igraph
解决您的问题的可行性持怀疑态度,因为您希望从上到下顺序地分离和分组行,而igraph
则从您的框架中读取所有边缘信息,而不管行的顺序如何。这并不意味着不可能使用
igraph
*,但您可能需要大量额外的努力来保留顺序特性,例如,迭代地添加边并检查它们是否可以链接。我不认为这是值得与这么多的努力,因为它的效率低下,也计算繁重。创意
我猜你是在以 * 连续 * 的方式将节点(用
var2
和var3
表示)从顶到底进行分组。如果这个过程被一行打断,比如从第三行到第四行,那么你需要从一个新的组开始。代码
这是一个老式的基础R选项
你将获得
数据