计算R中满足两个条件的数据集的平均值

时间:2021-07-24 11:01:35

标签: r dataframe conditional-statements

我想在 R 中找到按年份和 book_Id 分组的数据集的平均值。

我尝试使用 Tapply,但我只能在该函数中放置一个索引条件。

在 SQL 中它看起来像

youTubePlayerView

2 个答案:

答案 0 :(得分:2)

R 中 SQL 代码的翻译将是 -

res <- aggregate(users_read~year + book_id, subset(df, year == 2018), mean)

或在dplyr -

library(dplyr)

res <- df %>%
  filter( year == 2018) %>%
  group_by(book_id) %>%
  summarise(users_read = mean(users_read))

答案 1 :(得分:0)

多亏了 包,您还可以在 R 中使用您的 SQL 语句:

sqldf::sqldf("
Select year, book_id, avg(users_read)
From df1
Where year = 2018 
Group by year, book_id
")
<块引用>
  year book_id avg(users_read)
1 2018       1            10.4
2 2018       2            15.5
3 2018       3             9.0

可重现数据

set.seed(123)
n <- 20
df1 <- data.frame(year = sample(2018:2019, n, TRUE),
                  book_id = sample(3, n, TRUE),
                  users_read = sample(c(1:(n-1), NA), n))

请注意,列 users_read 包含一个 NA 值。

 df1
<块引用>
   year book_id users_read
1  2018       1          9
2  2018       1         NA
3  2018       1         10
4  2019       1          7
5  2018       3          5
6  2019       2         11
7  2019       3          6
8  2019       2         19
9  2018       1          2
10 2018       2         16
11 2019       3          8
12 2019       2         12
13 2019       1          1
14 2018       3         18
15 2019       3          3
16 2018       1         17
17 2019       3         13
18 2018       2         15
19 2018       1         14
20 2018       3          4