我有以下数据:
dat <- tribble(
~name, ~current_hit, ~future_hit, ~current_raw_power, ~future_raw_power, ~current_game_power, ~future_game_power,
"Jackson Holliday", 45, 60, 50, 60, 25, 60,
"James Wood", 30, 35, 70, 80, 55, 80)
我想要的输出是:
player names current future
"Jackson Holliday" hit 45 60
"Jackson Holliday" game_power 50 60
"Jackson Holliday" raw_power 25 60
"James Wood" hit 30 35
"James Wood" raw_power 70 80
"James Wood" game_power 55 80
我尝试在这里引用类似的问题:pivot_longer into multiple columns。 然而,这个用例与我的略有不同,正则表达式的使用有点超出了我目前的编码技能。
我的目的是稍后向数据集中添加额外的当前/未来配对,但我认为我应该从一个更简单的示例开始,从中我可以扩展解决方案。
感谢所有帮助!
dat %>%
pivot_longer(-name, names_to = "names") %>%
mutate(tmp = sub("(\\w)_.*", "\\1", names),
names = sub("current_|future_", "", names)) %>%
pivot_wider(names_from = tmp, values_from = value) %>%
rename(Player = name)
# A tibble: 6 × 4
Player names current future
<chr> <chr> <dbl> <dbl>
1 Jackson Holliday hit 45 60
2 Jackson Holliday raw_power 50 60
3 Jackson Holliday game_power 25 60
4 James Wood hit 30 35
5 James Wood raw_power 70 80
6 James Wood game_power 55 80