R объединить содержимое ячейки, если условие истинно - PullRequest
0 голосов
/ 31 октября 2018

Я хочу объединить содержимое двух ячеек, если выполняются несколько условий.

У меня есть следующий фрейм данных:

df <- data.frame(page = c("a1","a1","a2","a2","a3"),
                 keyword = c("a,b,c", "a,b,c,d", "d,e,f","g","a"))

Условия в псевдокоде:

if some cells of column page are equal (e.g. a1 and a2 appear two times)
then combine the content of column keyword and delete duplicate content. 

Это означает, что в конце концов мне нужен фрейм данных, который выглядит так:

page  keyword
  a1  a,b,c,d
  a2  d,e,f,g 
  a3  a

Я уже пробовал разные подходы, но не получил правильный результат. У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 31 октября 2018

С data.table вы можете сделать

library(data.table)
setDT(df)
df[, .(unlist(strsplit(keyword, split = ","))), by = page
   ][, .(keyword = toString(unique(V1))), by = page]
#   page    keyword
#1:   a1 a, b, c, d
#2:   a2 d, e, f, g
#3:   a3          a

А вот вариант tidyr и dplyr.

library(dplyr); library(tidyr)

df %>% 
  separate_rows(keyword, sep = ",") %>% 
  group_by(page) %>% 
  summarise(keyord = toString(unique(keyword)))
# A tibble: 3 x 2
#  page  keyord    
#  <chr> <chr>     
#1 a1    a, b, c, d
#2 a2    d, e, f, g
#3 a3    a 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...