我想在 R 中找到按年份和 book_Id 分组的数据集的平均值。
我尝试使用 Tapply,但我只能在该函数中放置一个索引条件。
在 SQL 中它看起来像
youTubePlayerView
答案 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)
多亏了 sqldf 包,您还可以在 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