首页 > 解决方案 > 我如何拆分和排序这个数据集

问题描述

这是我的数据的一个小样本量:

var         colour no Mcolour Ncolour
sa1_fr_19   B      10 66      3
sa1_fr_19   W      12 85      6
su3_sa2_18  B      8  70      9
su3_sa2_18  W      6  24      1

我想得到这张桌子:

year var sort nB McolourB NcolourB nW McolourW NcolourW
19   sa1 fr   10 66       3        12 85       6
18   su3 sa2  8  70       9        6  24       1

如果我们可以使用基本 R 代码来实现就好了

标签: r

解决方案


拆分列'_'并使用pivot_wider.

library(magrittr)
library(tidyr)

df %>%
  separate(var, c('var', 'sort', 'year'), sep = '_') %>%
  pivot_wider(names_from = colour, values_from = c(no, Mcolour, Ncolour), names_sep = '')

#  var   sort  year    noB   noW McolourB McolourW NcolourB NcolourW
#  <chr> <chr> <chr> <int> <int>    <int>    <int>    <int>    <int>
#1 sa1   fr    19       10    12       66       85        3        6
#2 su3   sa2   18        8     6       70       24        9        1

数据

df <- structure(list(var = c("sa1_fr_19", "sa1_fr_19", "su3_sa2_18", 
"su3_sa2_18"), colour = c("B", "W", "B", "W"), no = c(10L, 12L, 
8L, 6L), Mcolour = c(66L, 85L, 70L, 24L), Ncolour = c(3L, 6L, 
9L, 1L)), class = "data.frame", row.names = c(NA, -4L))

推荐阅读