2016-05-19 2 views
2

je les données suivantes:R tidyr :: erreur double propagation

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 

Je voudrais remodeler les données en utilisant tidyr :: propagation pour obtenir la sortie suivante:

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 

Je reçois dupliquer les erreurs, bien que je n'ai pas de doublons dans mes données!

df1=spread(df,VSTESTCD,VSORRES) 

Error: Duplicate identifiers for rows (36282, 36283), (59176, 59177), (59179, 59180)

+0

nous donner votre 'sortie dput' et votre code' spread' de – Ananta

+0

@ user9594 Pouvez-vous s'il vous plaît partager les erreurs réelles que vous recevez et la code que vous exécutez pour produire les erreurs mentionnées? – Technophobe01

+0

J'ai mis à jour la question pour inclure la commande et l'erreur. TIA – user9594

Répondre

0

Je suppose que je comprends votre question

# 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)