我想为固定间隔(例如2)计算坐标(列1)的值(第2列)的平均值。但是,具有值的坐标的数量是可变的。我想尝试不同大小的窗口。计算固定间隔内可变坐标值的平均值
数据为例(制表符分隔)
2 3
2 4
2 5
3 1
4 2
5 1
5 2
6 8
所需的输出尺寸为2的窗口(移动每两个X值)
x mean window
2 3.25 2-3
3 3.25 2-3
4 1.66 4-5
5 1.66 4-5
6 8 6-7
感谢您的时间和帮助!
我想为固定间隔(例如2)计算坐标(列1)的值(第2列)的平均值。但是,具有值的坐标的数量是可变的。我想尝试不同大小的窗口。计算固定间隔内可变坐标值的平均值
数据为例(制表符分隔)
2 3
2 4
2 5
3 1
4 2
5 1
5 2
6 8
所需的输出尺寸为2的窗口(移动每两个X值)
x mean window
2 3.25 2-3
3 3.25 2-3
4 1.66 4-5
5 1.66 4-5
6 8 6-7
感谢您的时间和帮助!
在这里你去:
test <- data.frame(one=c(2,2,2,3,4,5,5,6),two=c(3,4,5,1,2,1,2,8))
window.size <- 2
test$window.mean <- ave(
test$two,
findInterval(
test$one,
seq(min(test$one),max(test$one),window.size)
)
)
aggregate(window.mean ~ one, data=test, FUN=head, 1)
one window.mean
1 2 3.250000
2 3 3.250000
3 4 1.666667
4 5 1.666667
5 6 8.000000
举是如何工作的一些解释:
> seq(min(test$one),max(test$one),2)
[1] 2 4 6
:
如果使用2的窗口,在这个例子中定义了一些砍分
然后findInterval
只标记定义的切割点之间的组。
> findInterval(test$one,seq(min(test$one),max(test$one),2))
[1] 1 1 1 1 2 2 2 3
> test$one
[1] 2 2 2 3 4 5 5 6
ave
只是计算由第二个参数定义的基团内的第一个参数的平均值。因此,对于使用从findInterval
组和值从test$two
这个例子中,你结束了:
#groups
[1] 1 1 1 1 2 2 2 3
#values
[1] 3 4 5 1 2 1 2 8
mean(c(3,4,5,1)) = 3.25
mean(c(2,1,2)) = 1.66
mean(c(8)) = 8
优秀的使用'findInterval',我忘记了+1 – agstudy
感谢您的回答,这正是我想要的,我很抱歉在开始的时候感到困惑。你能解释我,如果你可以如何组合大声和findInterval的作品?谢谢! – LeonLara
@LeonLara - 没有问题,我给了一些更多的解释。希望能帮助到你。 – thelatemail
这里一个data.table
解决方案,使用findInterval
但data.table
语法糖:
library(data.table)
DT <- as.data.table(dat)
window.size <- 2
DT[, m:= mean(V2), findInterval(V1, seq(min(V1),max(V1),window.size))]
V1 V2 m
1: 2 3 3.250000
2: 2 4 3.250000
3: 2 5 3.250000
4: 3 1 3.250000
5: 4 2 1.666667
6: 5 1 1.666667
7: 5 2 1.666667
8: 6 8 8.000000
的想法:使用findInterval
创建一个新的分组变量(通过data.table的一部分),并根据这个新的分组变量计算坐标y的mean
。
编辑汇总结果:
DT[, list(unique(V1),value = mean(V2)),
findInterval(V1, seq(min(V1),max(V1),window.size))]
findInterval V1 value
1: 1 2 3.250000
2: 1 3 3.250000
3: 2 4 1.666667
4: 2 5 1.666667
5: 3 6 8.000000
太好了,谢谢! – LeonLara
在'data.table'中是否有一个'aggregate'等价物可以在这里应用? – thelatemail
@thelatemail我不太清楚'聚合',但我的编辑是否有意义? – agstudy
也许我今天很迟钝,但什么是数据和所需输出之间的关系?我不清楚。 – thelatemail
这个想法是让每个位置的值(第一列)具有平均值,如果不太清楚,我很抱歉。 – LeonLara
期望的输出与示例数据似乎没有关系,我认为这个电邮正在接受什么。如果只是为了避免混淆,你应该修复这个问题。 –