在R

时间:2018-06-22 13:27:14

标签: r aggregate mean

我有35个元素(PercChangeDiff)的列表,每个元素包含3个变量(WEEKINTpercentEXTpercent),所有这些变量包含34个值。我的目标是找到每个元素中WEEKINTpercent的每个日期的平均值(来自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

1 个答案:

答案 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)