【发布时间】:2020-04-20 13:50:09
【问题描述】:
我想使用 imdb_csv 数据库进行绘图。我想看看这些年来动画电影的 imdb_ratings 是如何变化的,但是我在按年份对电影进行分组时遇到了问题。我以某种方式设法让 group_by 函数工作,但前提是我已经在函数中启动了新管道。如果我在过滤了一些结果(在第一个块中)的管道函数中按年份进行分组,那么我会收到“找不到动画”的错误。但是第二块的问题是,即使我应用了选择功能,我也只能得到两列,年份和平均每年评级。另外奇怪的是,在控制台上,summarise(mean(as.numeric(imdbRating))) 行总是显示在我正在执行的任何行的下方。
代码:
imdb_ratings <- imdb_ratings %>% filter(Animation == 1 & !str_detect(title, "\\\\$")) %>%
extract(title, c("title", "year"),
"^(.*?)(?:\\s*\\([^()]*?(\\d{4})[^()]*\\))?$")
imdb_ratings <- imdb_ratings %>% select(title, imdbRating, year) %>%
group_by(year) %>%
mutate(n = n()) %>%
summarise(mean(as.numeric(imdbRating)))
这是我得到的结果:
输入:
structure(list(year = c(1930, 1933, 1934, 1937, 1938, 1939, 1940,
1942, 1943, 1944, 1946, 1947, 1949, 1950, 1951), `mean(as.numeric(imdbRating))` = c(55,
53, 58, 74, 67, 65.5, 74, 62.66667, 68.5, 63, 66.25, 65, 72,
69.5, 71)), row.names = c(NA, -15L), class = c("tbl_df", "tbl",
"data.frame"))
我不明白为什么即使我选择了标题 imdbRating,它也只显示汇总和年份。还有如何重命名汇总函数?
【问题讨论】:
-
你可以创建一个名字
summarise(Mean = mean(as.numeric(imdbRating))) -
它只显示两列,因为第一列是“分组”列,第二列是汇总列(
summarise只返回该列+任何分组列)。如果您需要更多列,请在group_by中指定它或为该列创建汇总输出。或者使用mutate,它将给出select之后的所有列,然后执行distinct -
为什么要重命名summary函数?你不喜欢这个名字吗?
标签: r