Создайте текст группировки строк столбца, извлеченный из столбца на основе другого столбца в R - PullRequest
2 голосов
/ 06 января 2020

это мой набор данных

id   text
 1    "red"
 1    "blue"
 2    "light blue"
 2    "red"
 2    "yellow"
 3    "dark green"

это результат, который я хочу получить:

 id  text2
 1   "red, blue"
 2  "light blue, red, yellow"
 3  "dark green"

в основном мне нужно собрать текст из столбца 'text' с запятыми в разделить различные элементы

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Использование aggregate и toString.

aggregate(. ~ id, d, toString)
#   id                    text
# 1  1               red, blue
# 2  2 light blue, red, yellow
# 3  3              dark green

Примечание. Это не будет работать со столбцами фактора, т. Е. Если is.factor(d$text) дает TRUE, вам потребуется немного другой подход. Демонстрация:

d$text <- as.factor(d$text)  # make 
is.factor(d$text)
#  [1] TRUE

Do:

aggregate(. ~ id, transform(d, text=as.character(text)), toString)

Данные:

d <- structure(list(id = c(1L, 1L, 2L, 2L, 2L, 3L), text = c("red", 
"blue", "light blue", "red", "yellow", "dark green")), row.names = c(NA, 
-6L), class = "data.frame")
1 голос
/ 06 января 2020

Мы можем использовать dplyr

library(dplyr)
df1 %>%
    group_by(id) %>%
    summarise(text2 = toString(text))

данные

df1 <- structure(list(id = c(1L, 1L, 2L, 2L, 2L, 3L), text = c("red", 
"blue", "light blue", "red", "yellow", "dark green")), row.names = c(NA, 
-6L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...