我有一个包含两列的表格,我想将其展开。我知道这是一个非常受欢迎且经过充分探索的主题,但是,我尝试了几种方法但没有得到我想要的。欢迎任何建议和投诉。
a = data.frame(names = c(rep(LETTERS[1:5],2)),
values = c("car", "cat", "melon", "happy", "winter",
"train", "cat", "apple", "sad", "summer") )
names values
1 A car
2 B cat
3 C melon
4 D happy
5 E winter
6 A train
7 B cat
8 C apple
9 D sad
10 E summer
我想从 categories
中创建列并从 values
中创建行。
但是共享键有问题(重复行2
和7
),导致无法使用spread
或 reshape
。
A B C D E
car cat melon happy winter
train cat apple sad summer
最佳答案
这是一个使用 pivot_wider
和 unnest
的 tidyverse
解决方案。
library(tidyverse)
a %>%
# change from long to wide format
pivot_wider(names_from = names,
values_from = values,
#Add this line to suppress the warning of values not being uniquely identified
values_fn = list(values = list)) %>%
# Unnest each list into separate rows
unnest(cols = everything())
# A tibble: 2 x 5
# A B C D E
# <chr> <chr> <chr> <chr> <chr>
#1 car cat melon happy winter
#2 train cat apple sad summer
关于在共享 key 时将行 reshape 为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61616500/