繁体   English   中英

在 header 中使用分组列整理表

[英]Tidying a Table with grouped columns in header

我从 web 中截取了下表,它在 header 中有 2 个分组列。

structure(list(Provenance = c(NA, "Bourgs", "Rurales"), `Mari Vivant` = c("OUI", 
"81", "120"), ...3 = c("NON", "10", "12"), ...4 = c("Pas spécifié", 
"2", "5"), `Type d’union` = c("Mariée", "50", "48"), ...6 = c("Mariée après union libre", 
"7", "18"), ...7 = c("Union libre et mariage", "5", "4"), ...8 = c("Union libre", 
"31", "67")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L))

我想整理一下数据。 如何在 tidyverse 中或在 R 中使用 data.table 来做到这一点?

我希望有一个包含所有可能的变量组合的小标题(前 10 行)

    A tibble: 27 x 8
   Provenance `Mari Vivant` `Type d’union` ...3  ...4  ...6  ...7 
   <chr>      <chr>         <chr>          <chr> <chr> <chr> <chr>
 1 Bourgs     NON           Mariée         NA    NA    NA    NA   
 2 Bourgs     NON           Mariée après ~ NA    NA    NA    NA   
 3 Bourgs     NON           Union libre    NA    NA    NA    NA   
 4 Bourgs     NON           Union libre e~ NA    NA    NA    NA   
 5 Bourgs     OUI           Mariée         NA    NA    NA    NA   
 6 Bourgs     OUI           Mariée après ~ NA    NA    NA    NA   
 7 Bourgs     OUI           Union libre    NA    NA    NA    NA   
 8 Bourgs     OUI           Union libre e~ NA    NA    NA    NA   
 9 Bourgs     Pas spécifié  Mariée         NA    NA    NA    NA   
10 Bourgs     Pas spécifié  Mariée après ~ NA    NA    NA    NA     

我确实尝试过:

df.all <- tidyr::complete(bouch, Provenance= c("Bourgs", "Rurales"), `Mari Vivant`=  c("OUI", "NON","Pas spécifié"),
                           `Type d’union`= c("Mariée", "Mariée après union libre","Union libre et mariage", "Union libre"),
                   fill = list(value = NA)) 

并得到一个在尾部具有值的小标题(如下所示的尾部:)

 Provenance `Mari Vivant` `Type d’union`  ...3  ...4  ...6  ...7 
  <chr>      <chr>         <chr>           <chr> <chr> <chr> <chr>
1 Rurales    Pas spécifié  Mariée après u~ NA    NA    NA    NA   
2 Rurales    Pas spécifié  Union libre     NA    NA    NA    NA   
3 Rurales    Pas spécifié  Union libre et~ NA    NA    NA    NA   
4 NA         OUI           Mariée          NON   Pas ~ Mari~ Unio~
5 Bourgs     81            50              10    2     7     5    
6 Rurales    120           48              12    5     18    4    
# ... with 1 more variable: ...8 <chr>

不完全是我想要的,即第 4 行。

Tidyr选项不同,您可以使用expand.grid生成数据框:

df <- expand.grid(Provenance = c("Bourgs", "Rurales"),
            `Mari Vivant` =c("OUI","NON", "Pas spécifié"),
            `Type d’union` =c("Mariée", "Mariée après union libre", "Union libre et mariage", "Union libre"))

'data.frame':   24 obs. of  3 variables:
   Provenance  Mari Vivant             Type d’union
1      Bourgs          OUI                   Mariée
2     Rurales          OUI                   Mariée
3      Bourgs          NON                   Mariée
4     Rurales          NON                   Mariée
5      Bourgs Pas spécifié                   Mariée

并添加 NA 列:

New_cols = c("..3", "..4", "..6", "..7", "..8")
df[New_cols] <- NA

'data.frame':   24 obs. of  8 variables:
 Provenance  Mari Vivant             Type d’union ..3 ..4 ..6 ..7 ..8
1      Bourgs          OUI                   Mariée  NA  NA  NA  NA  NA
2     Rurales          OUI                   Mariée  NA  NA  NA  NA  NA
3      Bourgs          NON                   Mariée  NA  NA  NA  NA  NA
4     Rurales          NON                   Mariée  NA  NA  NA  NA  NA
5      Bourgs Pas spécifié                   Mariée  NA  NA  NA  NA  NA

暂无
暂无

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

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