如何在 R 中将一个变量分布到列中

how to spread one variables into columns in r

提问人:VIX 提问时间:4/29/2021 更新时间:4/29/2021 访问量:33

问:

我的DF

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 传播

评论


答:

0赞 AnilGoyal 4/29/2021 #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

评论

0赞 VIX 4/29/2021
谢谢,它有效,是的,你对行的看法是对的。还有一个问题。列是从 2018 年到 2014 年排序的,我怎样才能按正确的顺序(从 2014 年到 2018 年)排列它们?
0赞 AnilGoyal 4/29/2021
只需在里面使用参数,如编辑后的答案所示。names_sort = Tpivot_wider