我陷入一个简单的问题。如何在ia列中设置公差(diff = + -0.002)内的数字进行组合和表示平均值,并在time列中求和。
例如
ia<-c(1.001,1.002,2,2.2,1.1,1,1,1,2.5,1,2.8)
time<-c(4.5,2.4,1.5,1.2,4.9,6.4,4.4, 4.7, 7.3,2.3, 4.3)
a<-as.data.frame(cbind(ia, time))
ia time
1 1.001 4.5
2 1.002 2.4
3 2.000 1.5
4 2.200 1.2
5 1.100 4.9
6 1.000 6.4
7 1.000 4.4
8 1.000 4.7
9 2.002 7.3
10 1.000 2.3
11 2.800 4.3
to
ia time
1 1.001 24.7 # ia = mean(1 2 6 7 8 10) time = sum(1 2 6 7 8 10)
3 2.001 9.7 # ia = mean(2 9) time = sum(2 9)
4 2.200 1.2
5 1.100 4.9
11 2.800 4.3
谢谢!
答案 0 :(得分:1)
我根本不清楚您要做什么,而您在评论中给出的示例/解释让我更加抓狂。
此外,以下可能是进一步完善的一个不错的起点。
我们可以使用cut
对ia
中的值进行分组,然后通过ia
总结time
和grp
值
diff = 0.002
library(dplyr)
a %>%
mutate(grp = cut(ia, seq(min(ia), max(ia), by = diff), include.lowest = T)) %>%
group_by(grp) %>%
summarise(
io = mean(ia),
time = sum(time))
## A tibble: 6 x 3
# grp io time
# <fct> <dbl> <dbl>
#1 [1,1.002] 1.00 24.7
#2 (1.098,1.1] 1.1 4.9
#3 (1.998,2] 2 1.5
#4 (2.198,2.2] 2.2 1.2
#5 (2.498,2.5] 2.5 7.3
#6 (2.798,2.8] 2.8 4.3
答案 1 :(得分:0)
一种解决方案是制作一个虚拟分组变量。不幸的是,很难从您的问题中看出您要寻找的分组。虽然基于您的玩具输出,但是我想您想要{(0,1.1)[1.1,2.01)[2.01,2.2)[2.2,2.8)[2.8,Inf)}?如果是这样,您可以使用:
U = svd.transform(X) / svd.singular_values_
然后,您可以更轻松地使用tidyverse函数
mySwiper.on('slideChange', function () {
// write your own scroll to top of slide function here
});