2013-11-28 3 views
1

비슷한 질문을하고 있었지만 광산과 비슷한 케이스를 찾을 수 없었습니다. 각 주제마다 조건마다 여러 개의 관찰이있는 데이터 프레임이 있습니다. 나는 그것을 바꿀 싶습니다 다수의 관측치가있는 행을 열로 작성하십시오.

subject <- c(rep("S1",4), rep("S2",4)) 
condition <- rep(c(rep("a",2), rep("b",2)),2) 
value  <- c(1:8) 
df  <- data.frame(subject,condition,value) 

df 
    subject condition value 
    S1   a  1 
    S1   a  2 
    S1   b  3 
    S1   b  4 
    S2   a  5 
    S2   a  6 
    S2   b  7 
    S2   b  8 

이처럼 보이도록 : 그것은 다음과 같다 내가 reshapecast을 시도

subject condition.a condition.b 
    S1   1   3 
    S1   2   4 
    S2   5   7 
    S2   6   8 

하지만 당 여러 관측이 있기 때문에 그들은 나에게 오류 메시지를 줄 주제와 조건. 누구든지이 작업을 수행하는 방법에 대한 제안이 있습니까?

감사합니다.

답변

1

ab의 값을 서로 연결해야한다는 것이 명확하지 않은 점에서 약간의 모호함이 있습니다.

, condition 첫 번째 (S2, b)와 부부로 (S1, a)을하기위한 곳 중 1 번째로 값을 원하는 가정 등등, 당신은 (subject의 다양한 발생을 계산 더미 count 열을 추가 할 수 있습니다) 다음과 같이 melt-count_iddcast 데이터를 사용

library(plyr) 
library(reshape2) 

subject <- c(rep("S1",4), rep("S2",4)) 
condition <- rep(c(rep("a",2), rep("b",2)),2) 
value  <- c(1:8) 
df  <- data.frame(subject,condition,value) 

df.2 <- ddply(df, .(subject, condition), function(x) { x$count <- 1:nrow(x); x }) 
df.2 
# subject condition value count 
# 1  S1   a  1  1 
# 2  S1   a  2  2 
# 3  S1   b  3  1 
# 4  S1   b  4  2 
# 5  S2   a  5  1 
# 6  S2   a  6  2 
# 7  S2   b  7  1 
# 8  S2   b  8  2 

df.3 <- melt(df.2, id.vars=c('subject', 'condition', 'count')) 
dcast(df.3, subject + count ~ condition) 
# subject count a b 
# 1  S1  1 1 3 
# 2  S1  2 2 4 
# 3  S2  1 5 7 
# 4  S2  2 6 8 

이 당신이 원하는 무엇인가?

+0

예, 그랬습니다! 제 목적을 위해, a와 b의 어떤 값이 함께 결합되었는지는 중요하지 않습니다. 감사! – Sol