示例数据集如下所示:

var1 var2 var3
a 1 2
b 2 3

如果var1=a的var2=a=var1=b的var3,我想将具有var1=a的记录链接到var1=b.

因此,样例数据集将如下所示:

var1 var2 var3
a 1 3

此外,如果var1=b之后的下一行也是b,则该记录也将被链接, 例如:

var1 var2 var3
a 1 2
b 2 3
b 3 5
b 7 9
c 5 9

我想要的结果是:

var1 var2 var3
a 1 5
b 7 9
c 5 9

有什么办法可以做到这一点吗?谢谢!


根据zx8754的S comments ,对于这个问题,可以使用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)

The graph only showed var2 and ignored var3:

问题

  1. 如果ab的名称不相同,如何连接它们?
  2. 如何在图中再增加一个变量(Var3)?

推荐答案

df %>%
   group_by(grp = cumsum(var2 != lag(var3, default = FALSE))) %>%
   summarise(var1 = first(var1), var2 = first(var2), var3=last(var3))

# A tibble: 3 × 4
    grp var1   var2  var3
  <int> <chr> <int> <int>
1     1 a         1     5
2     2 b         7     9
3     3 c         5     9

R相关问答推荐

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

MCMC和零事件二元逻辑回归

如何使用R对每组变量进行随机化?

如何在kableextra调用cell_spec()中忽略NA?

如何通过Docker部署我的shiny 应用程序(多个文件)

提取具有连续零值的行,如果它们前面有R中的有效值

制作等距离的线串副本

如何计算多个日期是否在一个日期范围内

使用整齐的计算(curl -curl )和杂音

您是否可以折叠R中的重复行,同时保留基于所选列的值?

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何对r中包含特定(未知)文本的行求和?

将多个列合并为一个列的有效方法是什么?

访问数据帧中未定义的列时出现R错误

将数据从一列转换为按组累计计数的单个虚拟变量

随机生成样本,同时在R内的随机样本中至少包含一次所有值

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?

从单个html段落中提取键-值对

Ggplot2水平线和垂直线的图例图标不匹配