R 需要将垂直数据集转换为具有一对多关系的水平数据集

R 需要将垂直数据集转换为具有一对多关系的水平数据集,r,tidyr,spread,R,Tidyr,Spread,想创建一个新的数据集,其中第1列是不同的分类变量,第2列到第X列是a的关联值。这是一个一对多关系 使用spread时,由于1对多关系,收到错误消息 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

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

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

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:
library(tidyr)

新数据一个选项是通过“Col1”创建序列列

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

一个选项是通过“Col1”创建序列列

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

这回答了你的问题吗?这回答了你的问题吗?我可以看到新的tibble创建了我正在寻找的水平数据集。并创建从1到7的新列名给定数据中1对多关系的频率,我只需要将其转换回数据帧。TYI可以看到新的tibble创建了我正在寻找的水平数据集。并创建从1到7的新列名给定数据中1对多关系的频率,我只需要将其转换回数据帧。泰