объединение столбца списка в r - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть данные, что первый столбец является столбцом списка, а второй столбец - соответствующим номером. Я хотел бы объединить объекты в первом столбце на основе номера второго столбца. вот пример; первый столбец - это список курсов, а второй столбец - соответствующий семестр:

df:

course  sem
math00     1
phys1      2
NA         3
eng00      4
c("math00","Geo00")   1
math02         2
NA         3

результат будет:

course                         semester
c("math00","math00","Geo00")        1
c("phys1","math02")                 2
NA                                  3
eng00                               4

Как я могу сделать это в R?

1 Ответ

0 голосов
/ 07 ноября 2018

Принимая столбец 'семестр' как list, сгруппированный по 'семестр', unlist 'курс' и затем summarise как list

library(tidyverse)
df %>%
   group_by(semester) %>%
   summarise(course = list(unique(unlist(course))))

Или используйте aggregate из base R

aggregate(df['course'], df['semester'], FUN = function(x) list(unique(unlist(x))))
#   semester        course
#1        1 math00, Geo00
#2        2 phys1, math02
#3        3            NA
#4        4         eng00

Данные

df <- data.frame(course = I(list('math00', 'phys1', NA, 'eng00', 
    c('math00', 'Geo00'), 'math02',NA)), semester = c(1, 2, 3, 4, 1, 2, 3))
...