Nano Hash - криптовалюты, майнинг, программирование

Как связать список значений столбца data.table как дополнительные строки

У меня есть вопрос, связанный с R data.table. В моей таблице один столбец ('b') может содержать несколько значений. Для каждого значения, разделенного запятыми, я хотел бы иметь дополнительную строку в таблице данных со значением столбца «a» рядом с ней.

# begin format data
d= data.table(a=c(1:3), b = c('a','b','c,d'))
# end format data
d2= data.table(a=c(1:3,3), b = c('a','b','c','d'))

Я начал разделять столбец b и хранить его как список, но не мог понять, как получить окончательные данные конечного формата.

d[,b2:= strsplit(b, ",")]              

Любая помощь высоко ценится

07.04.2021

Ответы:


1

В конечном итоге это действительно обман Как манипулировать data.frame в data.table, хотя и проинформированный https://github.com/Rdatatable/data.table/issues/2146 и https://github.com/Rdatatable/data.table/issues/3672.

Короче говоря, общий правильный путь, скорее всего,

tidyr::unnest(d[, b := strsplit(b, ",")], b)
# # A tibble: 4 x 2
#       a b    
#   <int> <chr>
# 1     1 a    
# 2     2 b    
# 3     3 c    
# 4     3 d    

хотя вы можете обойти это с помощью this данных с помощью

d[, b := strsplit(b, ",")
  ][, setnames(do.call(data.frame, .SD), names(d)), by = seq_len(nrow(d))
  ][,-1]
#        a      b
#    <int> <char>
# 1:     1      a
# 2:     2      b
# 3:     3      c
# 4:     3      d
07.04.2021
  • Вау, большое спасибо за быстрый ответ. Не нашел этой проблемы, но в моем случае она работает (оба решения). Спасибо. 07.04.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..