【问题标题】:Need to convert a vertical data set to horizontal with a one to many relationship需要将垂直数据集转换为具有一对多关系的水平数据
【发布时间】:2019-11-06 19:16:37
【问题描述】:

喜欢创建一个新数据集,其中第 1 列是不同的分类变量,第 2 列到第 X 列是 A 的关联值。这是一对多的关系。

由于一对多的关系,使用 spread 时收到错误消息

library(tidyr)
new_data <- spread(original_data, `State name`, `Park Location`)

Col 1 Col 2  Transform to  Col 1 Col 2 Col 3 Col 4 
A       C                    A     C    B     A
A       B                    B     A
A       A
B       A 

Error: Each row of output must be identified by a unique combination of keys.
Keys are shared for 687 rows:

【问题讨论】:

标签: r tidyr spread


【解决方案1】:

一种选择是通过 'Col1' 创建一个序列列

library(dplyr)
library(tidyr)
original_data %>%
   group_by(Col1) %>%
   mutate(rn = row_number()) %>%
   spread(rn, Col2)

【讨论】:

  • 我可以看到新的 tibble 创建了我正在寻找的水平数据集。并根据数据中 1 对多关系的频率创建 1 到 7 的新列名,我只需将其转换回数据框。 TY
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 2021-11-27
相关资源
最近更新 更多