[英]R: Transforming Columns into Rows Dataset
我有這個數據框:
# A tibble: 6 x 5
Full.Name freq_2019 freq_2020 Ra_2019 Ra_2020
<chr> <dbl> <dbl> <dbl> <dbl>
1 A. Patrick Beharelle 1.06 1.43 0.110 -0.116
2 Aaron P. Graft -1.50 -2.48 0.276 0.376
3 Aaron P. Jagdfeld -2.42 21.8 0.745 0.889
4 Adam H. Schechter -2.04 -0.470 0.299 0.296
5 Adam P. Symson 0.563 1.05 0.139 0.292
6 Adena T. Friedman -0.406 -0.110 0.309 0.242
我想將數據框轉換為這種結構:應該有一種相對簡單的方法可以做到這一點,但我做不到。 它總是把名字弄亂。 所以任何幫助表示贊賞。
一個可能的解決方案:
library(tidyverse)
df %>%
pivot_longer(-Full.Name) %>%
separate(name, into = c("name", "Y"), sep = "_") %>%
pivot_wider(c(Full.Name, Y)) %>%
relocate(Y, .after = last_col())
#> # A tibble: 12 × 4
#> Full.Name freq Ra Y
#> <chr> <dbl> <dbl> <chr>
#> 1 A. Patrick Beharelle 1.06 0.11 2019
#> 2 A. Patrick Beharelle 1.43 -0.116 2020
#> 3 Aaron P. Graft -1.5 0.276 2019
#> 4 Aaron P. Graft -2.48 0.376 2020
#> 5 Aaron P. Jagdfeld -2.42 0.745 2019
#> 6 Aaron P. Jagdfeld 21.8 0.889 2020
#> 7 Adam H. Schechter -2.04 0.299 2019
#> 8 Adam H. Schechter -0.47 0.296 2020
#> 9 Adam P. Symson 0.563 0.139 2019
#> 10 Adam P. Symson 1.05 0.292 2020
#> 11 Adena T. Friedman -0.406 0.309 2019
#> 12 Adena T. Friedman -0.11 0.242 2020
一個稍微簡單的解決方案是
library(tidyr)
pivot_longer(df, -1, names_sep = "_", names_to = c(".value", "Year"))
#> # A tibble: 12 x 4
#> Full.Name Year freq Ra
#> <chr> <chr> <dbl> <dbl>
#> 1 A. Patrick Beharelle 2019 1.06 0.11
#> 2 A. Patrick Beharelle 2020 1.43 -0.116
#> 3 Aaron P. Graft 2019 -1.5 0.276
#> 4 Aaron P. Graft 2020 -2.48 0.376
#> 5 Aaron P. Jagdfeld 2019 -2.42 0.745
#> 6 Aaron P. Jagdfeld 2020 21.8 0.889
#> 7 Adam H. Schechter 2019 -2.04 0.299
#> 8 Adam H. Schechter 2020 -0.47 0.296
#> 9 Adam P. Symson 2019 0.563 0.139
#> 10 Adam P. Symson 2020 1.05 0.292
#> 11 Adena T. Friedman 2019 -0.406 0.309
#> 12 Adena T. Friedman 2020 -0.11 0.242
由reprex 包於 2022-06-10 創建 (v2.0.1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.