R 添加新列并聚合数据

R 添加新列并聚合数据,r,R,我是R编程的新手,遇到了一个问题 以下是一个示例数据集: df <- data.frame( area_id = c(31,34,36,33,28,35, 31,34,36,33,28,35), description = c('paramount','sony','star','miramax','pixar','zee', 'paramount','sony','star','miramax','pixar','zee'), footfall =

我是R编程的新手,遇到了一个问题

以下是一个示例数据集:

 df <- data.frame(
      area_id = c(31,34,36,33,28,35, 31,34,36,33,28,35),
      description = c('paramount','sony','star','miramax','pixar','zee', 'paramount','sony','star','miramax','pixar','zee'),
      footfall = c(200, 354, 543, 123, 456, 634, 356, 765, 345, 235, 657, 524),
      income = c(21000, 19000, 35000, 18000, 12000, 190000, 21000, 19000, 35000, 18000, 12000, 190000),
      year = c(2019, 2019, 2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020, 2020));
df像这样做

library(tidyverse)

west <- c(28, 34, 36)

df %>% mutate(region = case_when(area_id %in% west ~ "West",
                                 TRUE ~ "East")) %>%
  pivot_longer(cols = c(footfall, income), names_to = "Header", values_to = "val") %>%
  group_by(region, Header, year) %>% summarise(val = sum(val)) %>%
  pivot_wider(id_cols = c(region, Header), names_from = year, values_from = val) %>%
  mutate(Total = `2019` + `2020`) -> df2

# A tibble: 4 x 5
# Groups:   region, Header [4]
  region Header   `2019` `2020`  Total
  <chr>  <chr>     <dbl>  <dbl>  <dbl>
1 East   footfall    957   1115   2072
2 East   income   229000 229000 458000
3 West   footfall   1353   1767   3120
4 West   income    66000  66000 132000

这将与
class(df)

相同。有没有一种方法可以让我获得一个数据帧而不是tibble?data.frame和tibble除了打印方法外没有什么不同。请检查我编辑的答案。尽管如此,您仍然可以自由使用
data.frame(df2)
使其像dataframe一样运行感谢您对@AnilGoyal的及时响应。
class(df2)

[1]   "tbl_df"   "tbl"     "data.frame"