У меня есть dataframe в следующем формате:Unlisting колонны по группам
id | name | logs
---+--------------------+-----------------------------------------
84 | "zibaroo" | "C47931038"
12 | "fabien kelyarsky" | c("C47331040", "B19412225", "B18511449")
96 | "mitra lutsko" | c("F19712226", "A18311450")
34 | "PaulSandoz" | "A47431044"
65 | "BeamVision" | "D47531045"
Как вы видите столбец «логи» включает в себя векторы строк в каждой ячейке.
Есть ли эффективный способ преобразования кадра данных в длинный формат (по одному наблюдению за строку) без промежуточного этапа разделения «журналов» на несколько столбцов?
Это важно, потому что набор данных очень велик, и количество журналов на человека кажется произвольным.
Другими словами, мне нужно следующее:
id | name | log
---+--------------------+------------
84 | "zibaroo" | "C47931038"
12 | "fabien kelyarsky" | "C47331040"
12 | "fabien kelyarsky" | "B19412225"
12 | "fabien kelyarsky" | "B18511449"
96 | "mitra lutsko" | "F19712226"
96 | "mitra lutsko" | "A18311450"
34 | "PaulSandoz" | "A47431044"
65 | "BeamVision" | "D47531045"
Вот dput
секции реального dataframe:
structure(list(id = 148:157, name = c("avihil1", "Niarfe", "doug henderson",
"nick tan", "madisp", "woodbusy", "kevinhcross", "cylol", "andrewarrow",
"gstavrev"), logs = list("Z47331572", "Z47031573", c("F47531574",
"B195945", "D186871", "S192939", "S182865", "G19539045"), c("A47231575",
"A190933", "C181859"), "F47431576", c("B47231577", "D193936",
"Q184862"), "Y47331579", c("A47531580", "Z195944", "B185870"),
"N47731581", "E47231582")), .Names = c("id", "name", "logs"
), row.names = 149:158, class = "data.frame")
Просьба 'dput' из (кусочек) ваших данных. – SabDeM
На самом деле, как выглядит текстовый файл или что вы воображаете, что может содержать объект R-data? Если последнее, то вместо этого вы должны вывести вывод 'dput (object)'. –
вам, вероятно, нужна библиотека (splitstackshape); cSplit (data, 'log', ',', direction = 'long') ' –