2013-07-28 3 views
0

다음 플롯을 작성하려고합니다. x- 축은 시험 번호를 나타내는 1에서 900까지갑니다. y 축은 반응 시간의 이동 평균을 갖는 세 가지 다른 선을 보여줍니다. 각 난이도마다 하나의 선이 표시됩니다 (Hard, Medium, Easy). facet_wrap을 사용하여 각 참여자별로 별도의 플롯이 표시되어야합니다.ggplot : 인수를 인수로 전달할 때 별도의 y- 선 그리기

이제 ggplot의 geom_smooth() 기능을 사용하면이 모든 것이 잘 작동합니다. 이처럼 : 나는 동물원 라이브러리의 rollmean 기능을 사용하려고하면

ggplot(cw_trials_f, aes(x=trial_number, y=as.numeric(correct), col=difficulty)) + 
    facet_wrap(~session_id) + 
    geom_smooth() + 
    ggtitle("Stroop Task") 

문제가 발생합니다. 여기에 내가 뭘하려 :

ggplot(cw_trials_f, aes(x=trial_number, y=rollmean(as.numeric(correct)-1, 50, na.pad=T, align="right"), col=difficulty)) + 
    facet_wrap(~session_id) + 
    geom_line() + 
    ggtitle("Stroop Task") 

이 먼저 어려움에 따라 데이터를 분할하고 rollmean 기능을 적용하지만, 다른 방법으로 주위하지 않는 것 같다. 따라서 한 줄만 표시되지만 세 가지 색상 모두로 표시됩니다. 롤 만 (Rollmean)은 각 카테고리의 시험 (Easy, Medium, Hard)에 별도로 적용 할 수 있습니까? 여기

일부 샘플 데이터입니다 : 그래서

session_id test_number trial_number trial_duration rule concordant switch correct reaction_time difficulty 
1 11674020   1   1   1872 word concordant yes  yes   1357  Easy 
2 11674020   1   2   2839 word discordant  no  yes   2324  Medium 
3 11674020   1   3   1525 color discordant yes  no   1025  Hard 
4 11674020   1   4   1544 color discordant  no  no   1044  Medium 
5 11674020   1   5   1451 word concordant yes  yes   952  Easy 
6 11674020   1   6   1252 color concordant yes  yes   746  Easy 
+3

ggplot 내에서 레이어간에 미적인 매핑을 이동하여이 작업을 수행 할 수있는 방법이 있지만 정말로 'aes'내부에서 'rollmean'을 호출하면 안됩니다. 'ddply'를 사용하여 롤링 평균을 새로운 변수로 먼저 계산 한 다음 플로팅을 수행하십시오. – joran

+0

고마워요! 이 일을 마치고 아래 코드를 게시했습니다. –

답변

1

, 나는 위의 코멘트에서 @의 joran의 제안 (감사) 다음 끝내었고, 한 다음

cw_trials_f <- ddply(cw_trials_f, .(session_id, difficulty), .fun = function(X) transform(X, movrt = rollmean(X$reaction_time, 50, na.pad=T, align="right"), movacc = rollmean(as.numeric(X$correct)-1, 50, na.pad=T, align="right"))) 

이 두 개의 추가 열을 추가 정확도 및 반응 시간의 이동 평균을 사용하여 data.frame에 적용됩니다.

다음이 그들을 음모 잘 작동 :

ggplot(cw_trials_f, aes(x=trial_number, y=movacc, col=difficulty)) + geom_line() + facet_wrap(~session_id) + ggtitle("Stroop Task") 

내가 원래하고 싶었던 것에 비해이 하나의 (작은) 단점이 있습니다 : 그것은 다른 길이를 시도하는 것이 조금 지루하고 느린하게 이동 평균 함수.