在R中的Dataframe中将多行合并为一行
Combining multiple rows into one single row in Dataframe in R
假设我有一个数据框,看起来像这样。
|类别 |文字 |
| :--------:| :--------------------: |
|第一 |我是格鲁特。 |
|第一 |我们是格鲁特。 |
|第二 |黑暗骑士崛起。 |
|第二 |我是蝙蝠侠。 |
但我们想将 Text 列中的行合并为一行,使其看起来像这样。
|类别 |文字 |
| ------ | ---------------------------------- |
|第一 |我是格鲁特。我们是格鲁特。 |
|第二 |黑暗骑士崛起。我是蝙蝠侠。 |
我该怎么做?
data.table
解法:
library(data.table)
dt0 <- data.table(
Category = c(rep("First", 2), rep("Second", 2)),
Text = c("I am Groot.", "We are Groot.", "The Dark Knight Rises.", "I am Batman.")
)
dt <- dt0[, .(Text = paste0(Text, collapse = " ")), by = .(Category)]
dt
说明:paste0
获取列 Text
(在 data.table
语法中计算为 dt$Text
)并将其折叠为单个值。此计算针对 Category
中的每个唯一值执行,由 by = .(Category)
.
表示
假设我有一个数据框,看起来像这样。
|类别 |文字 |
| :--------:| :--------------------: |
|第一 |我是格鲁特。 |
|第一 |我们是格鲁特。 |
|第二 |黑暗骑士崛起。 |
|第二 |我是蝙蝠侠。 |
但我们想将 Text 列中的行合并为一行,使其看起来像这样。
|类别 |文字 |
| ------ | ---------------------------------- |
|第一 |我是格鲁特。我们是格鲁特。 |
|第二 |黑暗骑士崛起。我是蝙蝠侠。 |
我该怎么做?
data.table
解法:
library(data.table)
dt0 <- data.table(
Category = c(rep("First", 2), rep("Second", 2)),
Text = c("I am Groot.", "We are Groot.", "The Dark Knight Rises.", "I am Batman.")
)
dt <- dt0[, .(Text = paste0(Text, collapse = " ")), by = .(Category)]
dt
说明:paste0
获取列 Text
(在 data.table
语法中计算为 dt$Text
)并将其折叠为单个值。此计算针对 Category
中的每个唯一值执行,由 by = .(Category)
.