2012-03-02 50 views
-1

@BenBolker這裏是我想要的輸出示例;我不知道它是否可以完成。使用延遲值替換R中的值

CURRENT_FIX_START CURRENT_FIX_END identifier trialtype rotatedimaged 
    targetloc prefix corrfix errfix 


7 202 30 rotated stimN11of2.jpg left 231 254 0 
7 208 42 rotated stimN221of2.jpg left 451 245 0 
241 761 78 rotated stimW131-of2.jpg right 345 345 0 

對於每個試驗,那裏是一個正確的前綴,由具有時間戳和正確corrfix表示,我希望腳本在同一行上打印的一切(我需要得到一個延遲從前綴到corrfix度量)。在舊數據中,時間戳發生在不同的行上。我正在考慮手動做這件事,但這太費時了。

回答

0

未經檢驗的,但如何:

latency <- with(mydata,abs(CURRENT_FIX_START-CURRENT_FIX_END)) 
for (i in c("prefix","corrfix","errfix")) { 
    mydata[[i]] <- ifelse(mydata[[i]]==1,latency,0) 
} 
+0

有多難這將是更換所有0的在每一列中,只留下每個試驗的時間戳?在每一列中,每個試驗都會有一個前綴和corrfix的數值。不過,我認爲如果我這樣做的話會有長度不匹配。 – 2012-03-05 21:56:13

+0

更具體地說,mydata [mydata $ prefix!= 0&mydata $ corrfix!= 0,1:18)將匹配這些值,但corrfix將在不同的行上返回並且是不同的值。我不知道如何在同一個試驗中獲得不同行上的值。因此,對於一行數據,每次試驗都會給我前綴的時間和corrfix的時間。 – 2012-03-05 22:28:29

+0

你能提供一些關於我如何完成這個任務的見解嗎? – 2012-03-09 21:03:55

0

你需要調整相應的索引,但是這似乎工作:

#fake data 
dat <- data.frame(fix1 = runif(10), fix2 = runif(10), prefix = sample(0:1, 10, TRUE), 
        corfix = sample(0:1, 10, TRUE), errfix = sample(0:1, 10, TRUE)) 

dat[, 3:5] <- apply(dat[, 3:5], 2, function(x) ifelse(x == 1, abs(dat$fix1 - dat$fix2),x))