我有这个数据集,名为
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
函数,但不知道如何实现该规则。有什么想法吗?
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