2013-02-22 55 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