Хобрук: Ваш путь к мастерству в программировании

R dataframe, расширить строки по строковой переменной

Может ли кто-нибудь помочь с этой небольшой проблемой расширения data.frame? Заранее спасибо!

# I have 
data.frame(rbind(c("1", "2", "3", "a/b/c"),
                 c("11", "0", "5", "c/d"),
                 c("3", "33", "0", "a"))
           )

#   X1 X2 X3    X4
# 1  1  2  3 a/b/c
# 2 11  0  5   c/d
# 3  3 33  0     a

# I want
data.frame(rbind(c("1", "2", "3", "a"),
                 c("1", "2", "3", "b"),
                 c("1", "2", "3", "c"),
                 c("11", "0", "5", "c"),
                 c("11", "0", "5", "d"),
                 c("3", "33", "0", "a"))
           )

#   X1 X2 X3 X4
# 1  1  2  3  a
# 2  1  2  3  b
# 3  1  2  3  c
# 4 11  0  5  c
# 5 11  0  5  d
# 6  3 33  0  a
07.07.2016

  • См. пакет splitstackshape. 07.07.2016

Ответы:


1

Мы можем использовать data.table

 library(data.table)
 setDT(df1)[, strsplit(as.character(X4), "/"), by = .(X1, X2, X3)]
07.07.2016
  • @ zx8754 Уже сделано. Это 07.07.2016
  • Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.