重塑 XYZ 数据框,使其有一列包含名称,三列包含 R 中的每个坐标

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

我有这个数据集,名为

landmark

它有 3 个头骨(每行),以及一组带有 XYZ 的 3 个地标(BRG、LMB、OPI)

landmark <- structure(list(SNPRC = c("1X3930", "1X4286", "1X1447"), BRG_X = c("-387.90069999999997", 
"-393.6952", "-389.20609999999999"), BRG_Y = c("116.82859999999999", 
"116.05589999999999", "121.73090000000001"), BRG_Z = c("256.81240000000003", 
"287.49799999999999", "264.99650000000003"), LMB_X = c("-382.9083", 
"-395.55110000000002", "-393.00819999999999"), LMB_Y = c("81.298199999999994", 
"79.999200000000002", "94.773399999999995"), LMB_Z = c("287.44240000000002", 
"323.68709999999999", "304.87130000000002"), OPI_X = c("-377.58800000000002", 
"-389.83870000000002", "-390.40710000000001"), OPI_Y = c("50.942900000000002", 
"43.560499999999998", "51.201799999999999"), OPI_Z = c("260.6773", 
"287.10390000000001", "275.97269999999997")), row.names = c(NA, 
-3L), class = "data.frame")

> landmark
   SNPRC               BRG_X              BRG_Y              BRG_Z               LMB_X              LMB_Y              LMB_Z               OPI_X              OPI_Y              OPI_Z
1 1X3930 -387.90069999999997 116.82859999999999 256.81240000000003           -382.9083 81.298199999999994 287.44240000000002 -377.58800000000002 50.942900000000002           260.6773
2 1X4286           -393.6952 116.05589999999999 287.49799999999999 -395.55110000000002 79.999200000000002 323.68709999999999 -389.83870000000002 43.560499999999998 287.10390000000001
3 1X1447 -389.20609999999999 121.73090000000001 264.99650000000003 -393.00819999999999 94.773399999999995 304.87130000000002 -390.40710000000001 51.201799999999999 275.97269999999997

我想重塑数据框,使其具有一列带有地标(BRG、LMB、OPI)和三列(带有 X、Y、Z)。

因此,在此示例中,将有 9 行。

我尝试使用

pivot_longer()
包中的
tidyr
函数,但不知道如何实现该规则。有什么想法吗?

r dplyr tidyverse coordinates tidyr
1个回答
0
投票
library(tidyr)
landmark |>
  pivot_longer(-SNPRC, names_sep = "_", names_to = c("landmark", "coord")) |>
  pivot_wider(names_from = coord, values_from = value)
# # A tibble: 9 × 5
#   SNPRC  landmark X                   Y                  Z                 
#   <chr>  <chr>    <chr>               <chr>              <chr>             
# 1 1X3930 BRG      -387.90069999999997 116.82859999999999 256.81240000000003
# 2 1X3930 LMB      -382.9083           81.298199999999994 287.44240000000002
# 3 1X3930 OPI      -377.58800000000002 50.942900000000002 260.6773          
# 4 1X4286 BRG      -393.6952           116.05589999999999 287.49799999999999
# 5 1X4286 LMB      -395.55110000000002 79.999200000000002 323.68709999999999
# 6 1X4286 OPI      -389.83870000000002 43.560499999999998 287.10390000000001
# 7 1X1447 BRG      -389.20609999999999 121.73090000000001 264.99650000000003
# 8 1X1447 LMB      -393.00819999999999 94.773399999999995 304.87130000000002
# 9 1X1447 OPI      -390.40710000000001 51.201799999999999 275.97269999999997
© www.soinside.com 2019 - 2024. All rights reserved.