首先:我看过其他有关将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的函数,但是无法使其正常工作。
我希望可以提供足够的信息,否则我很乐意提供更多信息。
答案 0 :(得分:0)
如果您的问题是如何复制AVERAGEIF函数,则可以使用逻辑索引:
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