2014-11-28 2 views
0

저는 사람들의 자격을 기록하는 데이터 세트를 가지고 있습니다. 변수는 다양한 형식으로 여러 사람의 데이터 행이 있습니다. 변수를 열로 반복하여 데이터의 각 사람에 대해 하나의 행을 가질 수있게하려면 "넓혀야"합니다. 데이터가 스프레드 시트 템플릿에 들어 있어야합니다.데이터 프레임을 변형하여 반복 변수 만들기

사람 당 최대 10 개의 행이 있지만 최소값은 지정되지 않습니다.

current <- structure(list(id = c("Bob", "Bob", "Bob", "Bob", "Jim", "Jim", 
"Jim", "Jim"), awarding.body = c("SQA", "SQA", "SQA", "SQA", 
"SQA", "SQA", "SQA", "SQA"), qual.type = c("HIGHER GRADE", "HIGHER GRADE", 
"STANDARD GRADE", "STANDARD GRADE", "HIGHER GRADE", "HIGHER GRADE", 
"STANDARD GRADE", "STANDARD GRADE"), year.awarded = c(1998L, 
1998L, 1996L, 1996L, 1999L, 1999L, 1997L, 1997L), band = c("A", 
"A", "B", "B", "B", "B", "A", "B"), subject = c("Mathematics", 
"Chemistry", "French", "Physics", "Fine Art", "Geography", "Craft & Design", 
"French")), .Names = c("id", "awarding.body", "qual.type", "year.awarded", 
"band", "subject"), class = "data.frame", row.names = c(NA, -8L 
)) 
여기

내가 Reshape2 패키지하지만 돈으로 내가 여러 가지를 시도

desired <- structure(list(id = c("Bob", "Jim"), awarding.body.1 = c("SQA", 
"SQA"), qual.type.1 = c("HIGHER GRADE", "HIGHER GRADE"), year.awarded.1 = 1998:1999, 
    band.1 = c("A", "B"), subject.1 = c("Mathematics", "Fine Art" 
    ), awarding.body.2 = c("SQA", "SQA"), qual.type.2 = c("HIGHER GRADE", 
    "HIGHER GRADE"), year.awarded.2 = 1998:1999, band.2 = c("A", 
    "B"), subject.2 = c("Chemistry", "Geography"), awarding.body.3 = c("SQA", 
    "SQA"), qual.type.3 = c("STANDARD GRADE", "STANDARD GRADE" 
    ), year.awarded.3 = 1996:1997, band.3 = c("B", "A"), subject.3 = c("French", 
    "Craft & Design"), awarding.body.4 = c("SQA", "SQA"), qual.type.4 = c("STANDARD GRADE", 
    "STANDARD GRADE"), year.awarded.4 = 1996:1997, band.4 = c("B", 
    "B"), subject.4 = c("Physics", "French")), .Names = c("id", 
"awarding.body.1", "qual.type.1", "year.awarded.1", "band.1", 
"subject.1", "awarding.body.2", "qual.type.2", "year.awarded.2", 
"band.2", "subject.2", "awarding.body.3", "qual.type.3", "year.awarded.3", 
"band.3", "subject.3", "awarding.body.4", "qual.type.4", "year.awarded.4", 
"band.4", "subject.4"), class = "data.frame", row.names = c(NA, 
-2L)) 

보고 데이터를 필요로하는 방법이다 : 여기

는 현재의 형태의 데이터의 간단한 예입니다 이것이 전형적인 재 형성 문제라고 생각하지 않습니까? 나는 여기에 다양한 모양을 바꿀 수있는 질문을 보았지만 해결책을 찾지 못했습니다.

크게 감사드립니다.

답변

1

나는 실제 데이터에 대해 테스트 한 그것은 사람 당 행의 다른 번호로 잘 작동

current1 <- transform(current, indx=ave(seq_along(id), id, FUN=seq_along)) 
desired1 <- reshape(current1, idvar='id', timevar='indx', direction='wide') 
row.names(desired1) <- NULL 
attr(desired1, 'reshapeWide') <- NULL 
all.equal(desired1, desired) 
#[1] TRUE 
+0

아주 좋은 감사를 사용해보십시오. –

관련 문제