我有一个广泛的数据框架朋友,我想在多列列上执行ivot_longer()。下面提供了数据框的最小示例:
id <- c(303, 303)
year <- c(2020, 2020)
city_a <- c("Madrid", "Madrid")
PA1 = c("AA", "AA")
a1_x <- c(475, 457)
a1_y = c(576, 576)
PA2 = c("BB", "BB")
a2_x = c(746, 756)
a2_y = c(465, 475)
PA3 = c("CC", "CC")
a3_x = c(546, 756)
a3_y = c(574, 867)
PA4 = c("DD", "DD")
a4_x = c(463, 875)
a4_y = c(565, 576)
PA5 = c("EE", "EE")
a5_x = c(564, 746)
a5_y= c(576, 576)
city_h = c("Chicago", "Chicago")
PH1 = c("FF", "FF")
h1_x = c(475, 475)
h1_y = c(576, 745)
PH2 = c("HH", "HH")
h2_x = c(746, 475)
h2_y = c(465, 465)
PH3 = c("JJ", "JJ")
h3_x = c(546, 475)
h3_y = c(574, 475)
PH4 = c("KK", "KK")
h4_x = c(463, 756)
h4_y = c(565, 586)
PH5 = c("MM", "MM")
h5_x = c(564, 456)
h5_y = c(576, 586)
vue_x = c(365, 465)
vue_y = c(846, 475)
vue_z = c(465, 845)
data <- data.frame(id, year, city_a, PA1, a1_x, a1_y, PA2, a2_x, a2_y, PA3, a3_x, a3_y, PA4, a4_x, a4_y, PA5, a5_x, a5_y, city_h, PH1, h1_x, h1_y, PH2, h2_x, h2_y, PH3, h3_x, h3_y, PH4, h4_x, h4_y, PH5, h5_x, h5_y, vue_x, vue_y, vue_z)
我想将最终数据框修改为以下格式:
id
年
城市:收集列city_a和city_h
人员:收集以PA或PH开头的列
x:收集模式为_x
的列
y:收集模式为_y
的列
z:显示数据deom _z列
希望这种解释是有意义的。我一直在尝试在https://community.rstudio.com/t/pivot-longer-on-multiple-column-sets-pairs/43958/7处修改解决方案的示例,但是没有成功。
答案 0 :(得分:0)
正如人们在评论中告诉您的那样,您的预期输出并不清楚。
这是我对您的问题的了解。如果这不是您所期望的,我希望这至少可以使您了解问题中不清楚的地方。
data %>%
pivot_longer(starts_with("city"),
names_to="city_name", values_to="city") %>%
pivot_longer(c(starts_with("PA"), starts_with("PH")),
names_to="person_name", values_to="person") %>%
pivot_longer(ends_with("_x"),
names_to="x_name", values_to="x") %>%
pivot_longer(ends_with("_y"),
names_to="y_name", values_to="y") %>%
pivot_longer(ends_with("_z"),
names_to="z_name", values_to="z") %>%
# select(-ends_with("_name")) %>% #uncomment this line to remove the names for good
identity()
哪个给:
# # A tibble: 4,840 x 12
# id year city_name city person_name person x_name x y_name y z_name z
# <dbl> <dbl> <chr> <fct> <chr> <fct> <chr> <dbl> <chr> <dbl> <chr> <dbl>
# 1 303 2020 city_a Madrid PA1 AA a1_x 475 a1_y 576 vue_z 465
# 2 303 2020 city_a Madrid PA1 AA a1_x 475 a2_y 465 vue_z 465
# 3 303 2020 city_a Madrid PA1 AA a1_x 475 a3_y 574 vue_z 465
# 4 303 2020 city_a Madrid PA1 AA a1_x 475 a4_y 565 vue_z 465
# 5 303 2020 city_a Madrid PA1 AA a1_x 475 a5_y 576 vue_z 465
# 6 303 2020 city_a Madrid PA1 AA a1_x 475 h1_y 576 vue_z 465
# 7 303 2020 city_a Madrid PA1 AA a1_x 475 h2_y 465 vue_z 465
# 8 303 2020 city_a Madrid PA1 AA a1_x 475 h3_y 574 vue_z 465
# 9 303 2020 city_a Madrid PA1 AA a1_x 475 h4_y 565 vue_z 465
# 10 303 2020 city_a Madrid PA1 AA a1_x 475 h5_y 576 vue_z 465
# # ... with 4,830 more rows