使用Tidyr进行更长的透视-多个变量存储在列名中 [英] Pivot longer using Tidyr - Multiple variables stored in column names
本文介绍了使用Tidyr进行更长的透视-多个变量存储在列名中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试重塑以下输入:
family_number father_name father_code mother_name mother_code children
1 1 John M11 Jane F21 2
2 2 Thomas M12 Mary F22 3
3 3 Jack M13 Jennifer F23 0
使用tidyr::pivot_longer
转换为更长的格式:
family_number name code children
1 1 John M11 2
2 1 Jane F21 2
3 2 Thomas M12 3
4 2 Mary F22 3
5 3 Jack M13 0
6 3 Jennifer F23 0
我不太理解如果您有多个列特别想要透视,它是如何工作的。谢谢!
输入表编码:
foo <- data.frame(family_number = c(1, 2, 3),
father_name = c("John", "Thomas", "Jack"),
father_code = c("M11", "M12", "M13"),
mother_name = c("Jane", "Mary", "Jennifer"),
mother_code = c("F21", "F22", "F23"),
children = c(2, 3, 0))
推荐答案
我们可以通过指定names_to
来使用pivot_longer
来匹配列名中的模式
library(dplyr)
library(tidyr)
foo %>%
pivot_longer(cols = -c(family_number, children),
names_to = c("grp", ".value"), names_sep = "_") %>%
select(-grp)
# A tibble: 6 x 4
# family_number children name code
# <dbl> <dbl> <chr> <chr>
#1 1 2 John M11
#2 1 2 Jane F21
#3 2 3 Thomas M12
#4 2 3 Mary F22
#5 3 0 Jack M13
#6 3 0 Jennifer F23
这篇关于使用Tidyr进行更长的透视-多个变量存储在列名中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文