有没有一种方法可以使用r代码来计算特定日期的平均价格? (AVERAGEIF函数)

时间:2020-05-26 15:47:06

标签: r

首先:我看过其他有关将AVERAGEIF从excel转换为R的文章,但我没有看到适合我具体情况的文章,而且我无法解决这一问题。 < / p>

我有一个数据集,其中包含一堆商品的每日定价。

看起来像这样

  listing_id     date price
1       1000 1/2/2015  $100
2       1200 2/4/2016  $150

@ https://send.firefox.com/download/228f31e39d18738d/#rlMmm6UeGxgbkzsSD5OsQw

的数据集样本(以及所需的结果)

我想要的数据集只有日期和该日期所有列表的平均价格。目的是要获得一个(不同的)数据框,看起来像这样,以便我可以使用它:

       Date Average Price
1  4/5/2015      204.5438
2  4/6/2015      182.6439
3  4/7/2015       176.553
4  4/8/2015      182.0448
5  4/9/2015      183.3617
6 4/10/2015      205.0997
7 4/11/2015      197.0118
8 4/12/2015      172.2943

我使用上面提供的示例中的Average.if函数(并按值复制粘贴)在Excel中创建了此代码。

我尝试首先在Excel中格式化数据,在这里我可以使用AVERAGE.IF函数说如果是这个特定日期,则取平均值。问题在于该数据集包含3000万行,而excel只允许100万行,因此行不通。

到目前为止,我所做的是:我使用

在R中创建了一个数据框(我希望在其中输入平均价格)
Avg = data.frame("Date" =1:2, "Average Price"=1:2)
Avg[nrow(Avg) + 2036,] = list("v1","v2")
Avg$Date = seq(from = as.Date("2015-04-05"), to = as.Date("2020-11-01"), by = 'day')

我试图通过this article和另一个函数来创建类似averageif的函数,但是无法使其正常工作。

我希望可以提供足够的信息,否则我很乐意提供更多信息。

1 个答案:

答案 0 :(得分:0)

如果您的问题是如何复制AVERAGEIF函数,则可以使用逻辑索引:

Excel data

R代码:

> df
  Dates Prices
1     1    100
2     2    120
3     3    150
4     1    320
5     2    250
6     3    210
7     1    102
8     2    180
9     3    150
idx <- df$Dates == 1  # Positions where condition is true
mean(df$Prices[idx])  # Prints same output as Excel