简体   繁体   English

转换 R 中的就业数据 - 从宽到长

[英]transform employment data in R - from wide to long

I have the following data我有以下数据

employed_male; unemployed_male; inactive_male; employed_female; unemployed_female; inactive_female;

i want to change it to我想把它改成

gender; status; value

For example:例如:

employed_male; unemployed_male; inactive_male; employed_female; unemployed_female; inactive_female;
5;             4;                6;            7;               3;                 1;

will be将会

gender; status; value
male; employed; 5
male; unemployed; 4
male; inactive; 6
female; employed; 7
female; unemployed; 3
female; inactive; 1

Do you know, which library or approach is best to achieve this result?你知道,哪个库或方法最能达到这个结果?

Using pivot_longer you can use:使用pivot_longer你可以使用:

tidyr::pivot_longer(df, 
                    cols = everything(), 
                    names_to = c('status', 'gender'),
                    names_sep = '_')

#  status     gender value
#  <chr>      <chr>  <int>
#1 employed   male       5
#2 unemployed male       4
#3 inactive   male       6
#4 employed   female     7
#5 unemployed female     3
#6 inactive   female     1

data数据

df <- structure(list(employed_male = 5L, unemployed_male = 4L,inactive_male = 6L,
    employed_female = 7L, unemployed_female = 3L, inactive_female = 1L),
    row.names = c(NA, -1L), class = "data.frame")

tidyr::pivot_longer() is a good choice. tidyr::pivot_longer()是一个不错的选择。 See this section of the documentation .请参阅文档的这一部分

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM