在共享 key 时将行 reshape 为列

标签 r dataframe

我有一个包含两列的表格,我想将其展开。我知道这是一个非常受欢迎且经过充分探索的主题,但是,我尝试了几种方法但没有得到我想要的。欢迎任何建议和投诉。

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 中创建行。

但是共享键有问题(重复行27),导致无法使用spread reshape

      A   B     C     D      E
    car cat melon happy winter
  train cat apple   sad summer

最佳答案

这是一个使用 pivot_widerunnesttidyverse 解决方案。

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/

相关文章:

r - R 中的 map 和动画

python - pandas的combine_first导致更多的行数

python - 替换DataFrame中的某些数字

r - dcast fun.aggregate 参数

r - 在固定效应模型上预测样本外

重新排序 R data.frame 的子集,同时修改行名称

python - Pandas 数据框中按键列分组的连续空值的计数

r - 计算R中数据帧的相关性

r - %op% 运算符是什么意思?例如 "%in%"?

r - 字典样式替换多个项目