我有35个元素(PercChangeDiff
)的列表,每个元素包含3个变量(WEEK
,INTpercent
和EXTpercent
),所有这些变量包含34个值。我的目标是找到每个元素中WEEK
和INTpercent
的每个日期的平均值(来自EXTpercent
),以便最终得到单个INTpercent
和{{ 1}}值用于整个列表的每个日期(我想汇总所有元素)。
我尝试了以下代码:
EXTpercent
但是出现以下错误:
aggregate.data.frame(as.data.frame(x),...)中的错误: 参数必须具有相同的长度
我检查了PercChangeAvg <- lapply(PercChangeDiff, function(x) {
aggregate(list(INTpercAvg = x[["INTpercent"]], EXTpercAvg = x[["EXTpercent"]]), by = as.list(x[["WEEK"]]), FUN = "mean", simplify = TRUE)
}
)
和x
参数的长度,它们都为34。对于如何实现此目的的任何想法将不胜感激。
下面我的数据的头
by
数据
> head(PercChangeDiff)
$`20014409-EA`
$`20014409-EA`$`WEEK`
[1] "2017-10-02" "2017-10-09" "2017-10-16" "2017-10-23" "2017-10-30" "2017-11-06" "2017-11-13" "2017-11-20"
[9] "2017-11-27" "2017-12-04" "2017-12-11" "2017-12-18" "2018-01-15" "2018-01-22" "2018-01-29" "2018-02-05"
[17] "2018-02-12" "2018-02-19" "2018-02-26" "2018-03-05" "2018-03-12" "2018-03-19" "2018-03-26" "2018-04-02"
[25] "2018-04-09" "2018-04-16" "2018-04-23" "2018-04-30" "2018-05-07" "2018-05-14" "2018-05-21" "2018-05-28"
[33] "2018-06-04" "2018-06-11"
$`20014409-EA`$INTpercent
[1] NA 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -42.80936
[11] 0.00000 0.00000 29.97658 0.00000 0.00000 -42.80936 0.00000 0.00000 0.00000 29.97658
[21] 2.28833 0.00000 0.00000 0.00000 -2.34192 0.00000 0.00000 0.00000 0.00000 0.00000
[31] 0.00000 0.00000 0.00000 0.00000
$`20014409-EA`$EXTpercent
[1] NA 0.0000000 -0.5102041 0.5076142 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[10] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[19] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[28] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
$`20015041-EA`
$`20015041-EA`$`WEEK`
[1] "2017-10-02" "2017-10-09" "2017-10-16" "2017-10-23" "2017-10-30" "2017-11-06" "2017-11-13" "2017-11-20"
[9] "2017-11-27" "2017-12-04" "2017-12-11" "2017-12-18" "2018-01-15" "2018-01-22" "2018-01-29" "2018-02-05"
[17] "2018-02-12" "2018-02-19" "2018-02-26" "2018-03-05" "2018-03-12" "2018-03-19" "2018-03-26" "2018-04-02"
[25] "2018-04-09" "2018-04-16" "2018-04-23" "2018-04-30" "2018-05-07" "2018-05-14" "2018-05-21" "2018-05-28"
[33] "2018-06-04" "2018-06-11"
$`20015041-EA`$INTpercent
[1] NA 30.4609218 0.0000000 0.0000000 -0.4024145 0.0000000 0.0000000 0.0000000
[9] 0.0000000 0.0000000 0.0000000 0.0000000 -24.2500000 0.0000000 0.0000000 0.0000000
[17] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 19.5171026
[25] 0.0000000 0.0000000 0.0000000 0.0000000 -24.2500000 0.0000000 0.0000000 0.0000000
[33] 19.5171026 0.0000000
$`20015041-EA`$EXTpercent
[1] NA 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -0.4048583 0.4032258
[9] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[17] 0.0000000 0.0000000 0.0000000 -42.9394813 0.0000000 0.0000000 30.0403226 0.0000000
[25] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[33] 0.0000000 0.0000000
$`20016844-EA`
$`20016844-EA`$`WEEK`
[1] "2017-10-02" "2017-10-09" "2017-10-16" "2017-10-23" "2017-10-30" "2017-11-06" "2017-11-13" "2017-11-20"
[9] "2017-11-27" "2017-12-04" "2017-12-11" "2017-12-18" "2018-01-15" "2018-01-22" "2018-01-29" "2018-02-05"
[17] "2018-02-12" "2018-02-19" "2018-02-26" "2018-03-05" "2018-03-12" "2018-03-19" "2018-03-26" "2018-04-02"
[25] "2018-04-09" "2018-04-16" "2018-04-23" "2018-04-30" "2018-05-07" "2018-05-14" "2018-05-21" "2018-05-28"
[33] "2018-06-04" "2018-06-11"
$`20016844-EA`$INTpercent
[1] NA 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
[12] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 4.784689 0.000000
[23] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
[34] 0.000000
$`20016844-EA`$EXTpercent
[1] NA 0.0000000 -19.9195171 16.3299663 0.0000000 0.0000000 0.0000000 0.0000000
[9] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[17] 0.0000000 -0.5076142 0.5050505 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[25] 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
[33] 0.0000000 0.0000000
答案 0 :(得分:0)
使用tidyverse
:
library(tidyverse)
map(l,as_tibble) %>%
bind_rows %>%
group_by(WEEK) %>%
summarize_all(mean)
# # A tibble: 34 x 3
# WEEK INTpercent EXTpercent
# <date> <dbl> <dbl>
# 1 2017-10-09 5.07682031 1.6835017
# 2 2017-10-16 4.26065163 -6.3436605
# 3 2017-10-23 0.00000000 9.5339597
# 4 2017-10-30 -0.06706908 0.0000000
# 5 2017-11-06 0.00000000 -6.6901408
# 6 2017-11-13 0.00000000 -22.9101160
# 7 2017-11-20 -10.25641026 0.0672043
# 8 2017-11-27 0.00000000 9.6359743
# 9 2017-12-04 -17.05685619 -22.8426396
# 10 2017-12-11 0.00000000 14.4098437
# # ... with 24 more rows
以R为基数的翻译:
aggregate(cbind(INTpercent, EXTpercent) ~ WEEK,
do.call(rbind, lapply(l,as.data.frame)),
mean)