R:如何根据公共单元格值相互追加行?

问题描述 投票:0回答:1

我有一个数据集,其中每对行都具有相同的 x 和 y 坐标。我试图通过将第二行附加到第一行的末尾,基于这组常见单元格将它们组合在 R 中。这是现在的样子:

类型 长度 宽度 x 坐标 y坐标
泳池 17.1 89.5 36.66 123.44
步枪 62.1 5.8 36.66 123.44
泳池 82.3 79.3 35.74 127.56
步枪 35.0 8.2 35.74 127.56

这就是我想要的样子:

类型 长度 宽度 x 坐标 y坐标 类型2 长度2 宽度2
泳池 17.1 89.5 36.66 123.44 步枪 62.1 5.8
泳池 82.3 79.3 35.74 127.56 步枪 35.0 8.2

我对 r 非常缺乏经验,我不知道如何做到这一点。我尝试使用 tidyverse 和ivot_wider 函数将其从长格式转换为宽格式,但它似乎没有达到我想要的效果。感谢任何帮助,谢谢:)

r dataframe append rstudio row
1个回答
0
投票

如果您确定行对不存在任何问题,则一种简单的方法可能是奇数行和偶数行的列绑定子集:

df <- tibble::tribble(
     ~Type, ~Length, ~Width, ~x.coord, ~y.coord,
    "Pool",    17.1,   89.5,    36.66,   123.44,
  "Riffle",    62.1,    5.8,    36.66,   123.44,
    "Pool",    82.3,   79.3,    35.74,   127.56,
  "Riffle",      35,    8.2,    35.74,   127.56
  )

cbind(df[seq(from = 1, to = nrow(df)-1, by = 2 ), ],
      df[seq(from = 2, to = nrow(df), by = 2), 1:3] |> setNames(c("Type2", "Length2", "Width2"))) 
#>   Type Length Width x.coord y.coord  Type2 Length2 Width2
#> 1 Pool   17.1  89.5   36.66  123.44 Riffle    62.1    5.8
#> 2 Pool   82.3  79.3   35.74  127.56 Riffle    35.0    8.2

创建于 2023-11-30,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.