通过r中的for循环保存表中的最大、最小平均中位数 s
以下是如何使用通过r中的for循环保存表中的最大、最小平均中位数 s,r,loops,for-loop,R,Loops,For Loop,以下是如何使用dplyr包,以iris数据为例: s<-NULL for(i in seq(from=1,to=3360,by=240)){ print(i) s<- rbind(s, data.table( max(mydata$duration_in_traffic[i:i+239]), min(mydata$duration_in_traffic[i:i+239]), mean(mydata$duration_in_traffic[i=i:
dplyr
包,以iris数据为例:
s<-NULL
for(i in seq(from=1,to=3360,by=240)){
print(i)
s<- rbind(s, data.table(
max(mydata$duration_in_traffic[i:i+239]),
min(mydata$duration_in_traffic[i:i+239]),
mean(mydata$duration_in_traffic[i=i:i+239]),
median(mydata$duration_in_traffic[i:i+239])))
}
iris$gp%
分组依据(gp)%>%
总结(变量(花瓣长度)、funs(最大值、最小值、平均值、中值))
##A tible:4×5
#最大最小平均中位数
#
# 1 1 1.9 1.0 1.460000 1.50
# 2 2 5.0 1.3 3.617500 4.15
# 3 3 6.9 3.0 4.902500 4.85
# 4 4 6.7 4.8 5.483333 5.55
在您的情况下,这应该有效:
iris$gp <- findInterval(1:nrow(iris), seq(1, nrow(iris), 40)) # create a grouping variable for every 40 observations of iris data
iris %>%
group_by(gp) %>%
summarise_at(vars(Petal.Length), funs(max, min, mean, median))
# # A tibble: 4 × 5
# gp max min mean median
# <int> <dbl> <dbl> <dbl> <dbl>
# 1 1 1.9 1.0 1.460000 1.50
# 2 2 5.0 1.3 3.617500 4.15
# 3 3 6.9 3.0 4.902500 4.85
# 4 4 6.7 4.8 5.483333 5.55
s$gp%
分组依据(gp)%>%
总结交通流量(VAR(持续时间)、funs(最大、最小、平均、中位数))
您需要改进问题的格式,并花更多的时间考虑。顺便说一句,您的方法没有问题。只是您可能需要创建一个空的data.frame,其中包含4列(用于max、min、mean和median),以及用于循环的i值的i行。您当前的代码只会根据循环的最后一个i值为您提供对象s,这将覆盖先前i值的data.frame。我得到所有值的s,不仅仅是i的最后一个值,但问题是,当我为例如输入值时,它无法读取max,min函数中的“i”。[1:240]它给出了正确的答案,但不是[i,i+239]。
s$gp <- findInterval(1:nrow(iris), seq(1, 3360, 240))
s %>%
group_by(gp) %>%
summarise_at(vars(duration_in_traffic), funs(max, min, mean, median))