R — Объединение повторяющихся строк внутри фрейма данных в R :

#r #dataframe #merge

#r #фрейм данных #слияние

Вопрос:

У меня есть фрейм данных, как показано ниже: обратите внимание, что COL1 в нем есть повторяющиеся записи

 COL1 COL2 COL3
10   hai   2   
10   hai   3
10   pal   1
  

Я хочу, чтобы результат был таким, как показано ниже: т.е. COL1 должен иметь только уникальную запись (10), COL2 должен содержать объединенные записи под ней без дубликатов (hai pal) и COL3 должен содержать сумму записей (2 3 1 =6)

ВЫВОД:

 COL1   COL2     COL3
10    hai pal    6
  

Ответ №1:

Возможно, нам нужно агрегировать по группам. Преобразуйте ‘data.frame’ в ‘data.table’ ( setDT(df1 ), сгруппированные по ‘COL1’, paste unique элементы в ‘COL2’ вместе, а также получите sum из ‘COL3’.

 library(data.table)
setDT(df1)[,.(COL2  = paste(unique(COL2), collapse=" "), COL3= sum(COL3)) , by = COL1]
#     COL1    COL2 COL3
#1:    10 hai pal    6
  

Комментарии:

1. и с dplyr , df %>% group_by(COL1) %>% summarise(COL2 = paste0(unique(COL2), collapse = " "), COL3 = sum(COL3))

2. Спасибо, Ронак…. Просто небольшая поправка… Я хочу сохранить вывод инструкции ur в другом фрейме данных. Как мне это сделать????

3. @Rambo Вам просто нужно назначить его, т.Е. df2 <- setDT(df1)[,.(COL2 = paste(unique(COL2), collapse=" "), COL3= sum(COL3)) , by = COL1] Если вам нужно преобразовать в data.frame, то setDT(df2)

4. @Rambo Вам нужно загрузить library(data.table) . Если он не установлен, то install.packages("data.table")

5. @akrun Отлично!… Это работает для меня .. Рад, что вы помогли 🙂 🙂