2014-10-06 3 views
-2

Я пытаюсь преобразовать фрейм данных из длинного в широкий формат, но я столкнулся с той же проблемой - я получаю NA. Я думаю, что может быть что-то не так с совокупной функцией, которую я использую:R Преобразование данных из длинного в широкоугольное

library(reshape2) 
library(plyr) 

ID_NUMERIC <- c(5525,5525,5525,5525,5525,8523,8523,8523,8523,8523,4569,4569,4569,4569,4569) 
SAMPLE_NAME <-c("HX44","HX44","HX44","HX44","HX44","RT5","RT5","RT5","RT5","RT5","OP1","OP1","OP1","OP1","OP1") 
DATE <- c(as.Date("1/1/2014","1/1/2014","1/1/2014","1/1/2014","1/1/2014","1/15/2014","1/15/2014","1/15/2014","1/15/2014","1/15/2014","1/3/2014","1/3/2014","1/3/2014","1/3/2014","1/3/2014")) 
ANALYSIS<- c("P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8") 
COMPONENT_NAME <- c("Density","Gravity","C6","C7","C8","Density","Gravity","C6","C7","C8","Density","Gravity","C6","C7","C8") 
RESULT <- c(0.8593,33.13,2.1,2.3,2.2,0.8593,33.13,2.1,2.3,2.2,0.8593,33.13,2.1,2.3,2.2) 
NAME <- c("HX","HX","HX","HX","HX","RT","RT","RT","RT","RT","OP","OP","OP","OP","OP") 

first <- data.frame(ID_NUMERIC,SAMPLE_NAME,DATE,COMPONENT_NAME,ANALYSIS,RESULT,NAME) 

second <- ddply(first, .(COMPONENT_NAME), function(x){x$id=1:nrow(x);x}) 
last <- dcast(second, NAME+SAMPLE_NAME+DATE+ID_NUMERIC+ANALYSIS+id~COMPONENT_NAME, value.var="RESULT") 
+0

Что случилось со всеми кавычками на символьных векторных элементах? Кроме того, следует ли разделять запятую 'HX44'? – hrbrmstr

+0

@hrbrmstr Спасибо. Первоначально я получил dataframe из SQL-запроса, но хотел сделать воспроизводимый пример и забыл кавычки. – GK89

ответ

0

Вы можете поместить данные в матрицу и работать с ней оттуда?

ID_NUMERIC <- c(5525,5525,5525,5525,5525,8523,8523,8523,8523,8523,4569,4569,4569,4569,4569) 
SAMPLE_NAME <-c("HX44","HX44","HX44","HX44","HX44","RT5","RT5","RT5","RT5","RT5","OP1","OP1","OP1","OP1","OP1") 
COMPONENT_NAME<-c("Density","Gravity","C6","C7","C8","Density","Gravity","C6","C7","C8","Density","Gravity","C6","C7","C8") 
NAME<-c("HX","HX","HX","HX","HX","RT","RT","RT","RT","RT","OP","OP","OP","OP","OP") 
ANALYSIS<-c("P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8","P8") 
DATE <- c("1/1/2014","1/1/2014","1/1/2014","1/1/2014","1/1/2014","1/15/2014","1/15/2014","1/15/2014","1/15/2014","1/15/2014","1/3/2014","1/3/2014","1/3/2014","1/3/2014","1/3/2014") 
RESULT <- c(0.8593,33.13,2.1,2.3,2.2,0.8593,33.13,2.1,2.3,2.2,0.8593,33.13,2.1,2.3,2.2) 
data<-matrix(c(ID_NUMERIC,SAMPLE_NAME,DATE,ANALYSIS,COMPONENT_NAME,RESULT,NAME),nrow=7,byrow=TRUE) 
rownames(data)<-c("ID_NUMERIC","SAMPLE_NAME","DATE","ANALYSIS","COMPONANT_NAME","RESULT","NAME") 
View(data) 
data.frame(data) 
+0

данные изначально поступают из SQL-запроса. просто создал df в качестве примера, чтобы показать, как данные выглядят как – GK89

+0

ok. но вы говорите, что хотите, чтобы он был широким, а не длинным? это создает широкую область данных, а не длинную. –

+0

Правильно ... но структура базы данных SQL длинна, поэтому, когда я делаю запрос, он длинный – GK89

Смежные вопросы