R tidyr::传播重复错误

R tidyr::传播重复错误,r,dataframe,reshape,tidyr,spread,R,Dataframe,Reshape,Tidyr,Spread,我有以下数据: ID AGE SEX RACE COUNTRY VISITNUM VSDTC VSTESTCD VSORRES 32320058 58 M WHITE UKRAINE 2 2016-04-28 DIABP 74 32320058 58 M WHITE UKRAINE 1 2016-04-21 HEIGHT 183 32320058 58

我有以下数据:

ID        AGE SEX   RACE    COUNTRY VISITNUM    VSDTC   VSTESTCD    VSORRES
32320058    58  M   WHITE   UKRAINE 2   2016-04-28       DIABP          74
32320058    58  M   WHITE   UKRAINE 1   2016-04-21       HEIGHT        183
32320058    58  M   WHITE   UKRAINE 1   2016-04-21       SYSBP         116
32320058    58  M   WHITE   UKRAINE 2   2016-04-28       SYSBP         116
32320058    58  M   WHITE   UKRAINE 1   2016-04-21       WEIGHT        109
22080090    75  M   WHITE   MEXICO  1   2016-05-17       DIABP          81
22080090    75  M   WHITE   MEXICO  1   2016-05-17       HEIGHT        176
22080090    75  M   WHITE   MEXICO  1   2016-05-17       SYSBP         151
我想使用tidyr::spread重塑数据,以获得以下输出:

ID AGE SEX  RACE    COUNTRY VISITNUM    VSDTC    DIABP SYSBP WEIGHT HEIGHT
32320058    58  M   WHITE   UKRAINE 2   2016-04-28   74   116   NA   NA
32320058    58  M   WHITE   UKRAINE 1   2016-04-21   NA   116   109   183
22080090    75  M   WHITE   MEXICO  1   2016-05-17   81   151   NA   176
我收到重复的错误,尽管我的数据中没有重复的错误

df1=spread(df,VSTESTCD,VSORRES)
错误:行(3628236283)、(5917659177)、(5917959180)的标识符重复


我想我理解你的问题

# As many rows are identical, we should create a unique identifier column

# Let's take iris dataset as an example

# install caret package if you don't have it

install.packages("caret")

# require library
library(tidyverse)
library(caret)

# check the dataset (iris)
head(iris)

# assume that I gather all columns in iris dataset, except Species variable

# Create an unique identifier column and transform wide data to long data as follow

iris_gather<- iris %>% dplyr::mutate(ID=row_number(Species)) %>% tidyr::gather(key=Type,value=my_value,1:4)

# check first six rows

head(iris_gather)
# using *spread* to spread out the data

iris_spread<- iris_gather %>% dplyr::group_by(ID) %>% tidyr::spread(key=Type,value=my_value) %>% dplyr::ungroup() %>% dplyr::select(-ID)

# Check first six rows of iris_spread

head(iris_spread)
#由于许多行是相同的,我们应该创建一个唯一标识符列
#让我们以iris数据集为例
#如果没有插入符号包,请安装它
安装程序包(“插入符号”)
#需要图书馆
图书馆(tidyverse)
图书馆(插入符号)
#检查数据集(iris)
头部(虹膜)
#假设我收集了iris数据集中的所有列,但物种变量除外
#创建一个唯一标识符列,并将宽数据转换为长数据,如下所示
iris\u聚集%dplyr::mutate(ID=行数(物种))%%>%tidyr::聚集(键=类型,值=我的值,1:4)
#检查前六行
头部(虹膜集合)
#使用*spread*展开数据
iris\u排列%dplyr::group\u by(ID)%%>%tidyr::排列(key=Type,value=my\u value)%%>%dplyr::ungroup()%%>%dplyr::select(-ID)
#检查iris_排列的前六行
头部(虹膜扩散)

给我们您的
dput
输出和
排列
code@user9594你能分享你收到的实际错误和你运行的代码来产生上面提到的错误吗?我更新了这个问题,把命令和错误都包括进去了。TIA@TBSRounder. 正如我在寻找的输出中所解释的,只需将它们作为不同的访问进行处理您的示例数据集就可以使用tidyr_0.4.1进行传播