#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 Отлично!… Это работает для меня .. Рад, что вы помогли 🙂 🙂