2013-06-06 2 views
-1

에서 변수를 열로하고 참가자를 행으로 사용하여 CSV 파일에 대한 실험 결과를 분석합니다. 모든 데이터가 수집되기 전에 이미 가지고있는 데이터에 대한 예비 분석을하고 싶습니다. 그러나 일부 참가자는 분석에서 제외해야합니다. 데이터를 삭제하지 않고이 작업을 수행하는 가장 좋은 방법은 데이터를 삭제하지 않고 (나에게 문제가 발생할 수 있음) 새 열을 만들고이를 "제외"한 다음 각 참가자가 정의 할 수 있도록 1 또는 0을 입력하는 것입니다 누가 제외시킬 것인가? 그런 다음 통계를 실행할 때 데이터의 하위 집합 (예 : exclude == 0)에서이 작업을 수행합니다.데이터 합치기 R

전체 데이터 세트를 다운로드 할 때 문제가 발생합니다. 예비 데이터 세트의 "제외"열에서 완전한 데이터 세트로 데이터를 가져와서 모든 0과 1이 올바른 참가자에게 연결되도록하려면 어떻게해야합니까? 예비 데이터 세트와 전체 데이터 세트의 행이 정확히 동일한 순서로되어있는 경우 어떻게 복사하여 붙여 넣을 수 있는지 보여줄 수 있지만 오류가 발생하기 쉽고 제외 열을 만들려면 다른 열을 기준으로 정렬하기가 훨씬 쉽습니다. . 나는 rbindmerge을 시도했으나 그들이 말할 수있는 한 멀리까지는 작동하지 않습니다.

prelim <- data.frame(
participant = c(1,2,3), 
exclude = c(0,1,0) 
) 

full = data.frame(
participant = c(1,2,3,4,5), 
exclude = c(NA,NA,NA,NA,NA) 
) 

ideal = data.frame(
participant = c(1,2,3,4,5), 
exclude = c(0,1,0,NA,NA) 
) 
+4

을 나는 문제는 줄기가있는 것을 (예를 들어이없는 경우) 같은데요 'attach '를 사용하여. 'attach '를 사용하지 않고 대신에'with','subset' 그리고'''를 사용하면'attach'에 의해 생성 된 특별한 가능성에 의한 엄청난 혼란의 원인을 스스로 완화 할 수 있습니다. –

+1

Heed @ DWin의 충고는 재현 가능한 예제가 없지만 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 도움이 될 수 없다. – alexwhan

+0

감사합니다. 응답. NAs가 비어있는 위의 간단한 예제가 포함되었습니다. Dwin, 나는 첨부를 사용하지 않았다. 인트라, 병합 기능을 시도 할 때 모든 열을 2 개의 복사본으로 만듭니다. 모든 열을 동일하게 유지하려고 할 때. 나는 당신의 코드를 % in %로 알아낼 수 없다. 나는 결코 그 연산자를 사용하지 않았다.문제를 복잡하게 만드는 것은 if 또는 ifelse를 사용하여 R에 열을 직접 작성하는 대신 데이터를 수동으로 입력하여 Excel에서 제외 열을 작성한다는 것입니다. 그게 문제를 해결할 수있는 방법일까요? – user2461563

답변

0

은 우리가 데이터를 볼 수 없습니다 주어진보고 싶은데 여러 가지 방법이 있습니다 : 여기

내가 할 노력하고있어의 예입니다.

당신 수 :

가져 오기 모두 데이터 세트 및 생성하여 조건 참가자 식별자에 따라 전체 데이터 세트 merge에 따라 제외 변수입니다. 예를 들면 :

merge(preliminarydata, completedata, by.x='participantid', by.y='participantid') 

또는 %in% 연산자를 사용하는 병합하지 않고 변수를 제외 당신을 완료합니다.

peopletoexclude <- which(participantsinfulldata %in% participantsinpreliminarydata) 
myfulldataset$exclude <- 0 
myfulldataset$exclude[peopletoexclude] <- 1 

사람들이 생각할 수있는 많은 다른 것들.

아니면 제외하려는 사람들을 삭제하고 예비 분석을 수행하십시오. CSV 파일에 대해 명시 적으로 write.csv을 사용하지 않으면 R에서 수행하는 모든 데이터 조작이 원래 CSV에 영향을 미치지 않습니다. 데이터를로드 한 다음 CSV를 잊어 버립니다. 분석을 저장해야하는 경우 save(myDatainR, file="myDatainR.Rdata") 수 있으며 언제든지 다시 올 수 있습니다. ?

0

d <- merge(prelim, full, all = T) 
d[!duplicated(d[,1]), ] 

을 병합하려고하거나 data.table에 관심이있을 수 :

library(data.table) 
DF1<-data.frame(x=1:3,y=4:6,t=10:12) 
DF2<-data.frame(x=3:5,y=6:8,s=1:3) 
library(data.table) 
DF1 <- data.table(DF1, key = c("x", "y")) 
DF2 <- data.table(DF2, key = c("x", "y")) 
DF2[DF1] # for example 
DF1[!DF2] # or maybe you want this? 
DF2[!DF1]