使用Tidyr进行更长的透视-多个变量存储在列名中 [英] Pivot longer using Tidyr - Multiple variables stored in column names

查看:12
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆