我有一个包含 213 行和 2 列的数据框(日期 和文章)。最终目标是通过按季度对 Date 进行分组来减少行数。显然,我希望相应地合并 Article 列中的文本。
让我们举个例子。
Date <- c("2000-01-05", "2000-02-03", "2000-03-02", "2000-03-30", "2000-04-13", "2000-05-11", "2000-06-08", "2000-07-06", "2000-09-14", "2000-10-05", "2000-10-19", "2000-11-02", "2000-12-14")
Article <- c("Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text","Long Text")
Date <- data.frame(Date)
Article <- data.frame(Article)
df <- cbind(Date, Article)
#Dataframe
Date Article
1 2000-01-05 Long Text
2 2000-02-03 Long Text
3 2000-03-02 Long Text
4 2000-03-30 Long Text
5 2000-04-13 Long Text
6 2000-05-11 Long Text
7 2000-06-08 Long Text
8 2000-07-06 Long Text
9 2000-09-14 Long Text
10 2000-10-05 Long Text
11 2000-10-19 Long Text
12 2000-11-02 Long Text
13 2000-12-14 Long Text
我想获得的最终输出如下:
Date Article
1 2000 Q1 Long Text, Long Text, Long Text, Long Text
2 2000 Q2 Long Text, Long Text, Long Text
3 2000 Q3 Long Text, Long Text
4 2000 Q4 Long Text, Long Text, Long Text, Long Text
从本质上讲,行已经按季度以及相应的文本分组在一起。
我试着环顾四周,但不幸的是,我不知道该怎么做。
谁能帮帮我?
谢谢!
最佳答案
一个 dplyr
和 lubridate
选项可以是:
df %>%
group_by(Date = as.character(lubridate::quarter(ymd(Date), with_year = TRUE))) %>%
summarise(Article = paste0(Article, collapse = ","))
Date Article
<chr> <chr>
1 2000.1 Long Text,Long Text,Long Text,Long Text
2 2000.2 Long Text,Long Text,Long Text
3 2000.3 Long Text,Long Text
4 2000.4 Long Text,Long Text,Long Text,Long Text
关于r - 如何按季度对数据框中的行进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58462458/