2013-02-22 208 views
0

嗨,大家好,我之前問過類似的問題here,我得到了一些非常棒的答案。但事實證明,我需要更多的數據,我需要與悲傷地合作。因此,我使用頭(數據)生成的這種格式的示例數據。所以,我有3個標本用自己的時間和速度數據....我不完全使用速度爲我的實際數據R編程修復錯誤

Time Speed Time.1 Speed.1 Time.2 Speed.2 

Error in unique.default(x) : unique() applies only to vectors 

是否有可能爲你們告訴我該怎麼做?我可以在excel中使用公式來做到這一點,但我擁有如此之多的數據以至於excel崩潰,因此我確實需要'R'但對其有極小的瞭解......謝謝你們......

+1

你有沒有運行** **完全相同的代碼我用三個樣本寫了這些數據?它應該適用於任何數量的標本。這就是爲什麼我們採用其他所有列並使用'lapply'運行。這對我來說可以。也許你應該向我們展示你想要的輸出......? – Arun 2013-02-22 07:14:13

+0

如果他們回答你的問題,請接受答案。 – Arun 2013-02-22 07:19:22

+0

也在這裏:請閱讀[FAQ](http://stackoverflow.com/faq)如何提出一個問題:給它一個有意義的標題是一開始。 – 2013-02-25 12:38:15

回答

0

運行相同的代碼。你爲什麼編輯by=3?您想創建idx = 1, 3, 5 ...by=3,將創建1, 4, 7...。您的數據,只要它是在格式Time, data, Time, data, Time, data, ..., ...,您可以使用相同的代碼

require(IRanges) 
# by equals 2 because we want to get the `Time` column index every time 
idx <- seq(1, ncol(data), by=2) 
# idx is now 1, 3, 5. It will be passed one value at a time to `i`. 
# that is, `i` will take values 1 first, then 3 and then 5 and each time 
# the code within is executed. 
o <- lapply(idx, function(i) { 
    ir1 <- IRanges(start=seq(0, max(data[[i]]), by=401), width=401) 
    ir2 <- IRanges(start=data[[i]], width=1) 
    t <- findOverlaps(ir1, ir2) 
    d <- data.frame(mean=tapply(data[[i+1]], queryHits(t), mean)) 
    cbind(as.data.frame(ir1), d) 
}) 

讓我對這樣的數據:

# > o 
# [[1]] 
# start end width mean 
# 1  0 400 401 1.05 
# 
# [[2]] 
# start end width mean 
# 1  0 400 401 1.1 
# 
# [[3]] 
# start end width  mean 
# 1  0 400 401 1.383333 
+0

這是我的錯我沒有輸入正確的東西...再次感謝 – 2013-02-22 14:56:32