【问题标题】:how to spread one variables into columns in r如何将一个变量分散到r中的列中
【发布时间】:2021-07-22 20:30:05
【问题描述】:

我的朋友

A   B    C  D
a 2015   1  2
d 2016   2  3
k 2016   2  4
k 2018   3  6

我需要做这种重塑

A value 2015 2016 2018
a   C    1
a   D    2 
d   C    2
d   D    3
k   C         2
k   D         4
k   C               3
k   D               6

感谢您的帮助

【问题讨论】:

    标签: r reshape data-manipulation reshape2 spread


    【解决方案1】:

    虽然不完全确定,但我想你想要这个! (因为没有理由让k&C和K&D组合重复两行!

    library(tidyverse)
    df %>% pivot_longer(!c(A, B)) %>% pivot_wider(id_cols = c(A, name), names_from = B, values_from = value, names_sort = T)
    # A tibble: 6 x 5
      A     name  `2015` `2016` `2018`
      <chr> <chr>  <int>  <int>  <int>
    1 a     C          1     NA     NA
    2 a     D          2     NA     NA
    3 d     C         NA      2     NA
    4 d     D         NA      3     NA
    5 k     C         NA      2      3
    6 k     D         NA      4      6
    

    【讨论】:

    • 谢谢您,它有效,是的,您对行的看法是正确的。还有一个问题。列是从 2018 年到 2014 年排序的,我怎样才能以正确的顺序(从 2014 年到 2018 年)?
    • 只需在pivot_wider 中使用names_sort = T 参数,如编辑后的答案所示。
    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 2018-05-13
    • 2018-10-27
    • 2018-06-16
    • 2020-04-17
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多