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

Извлечь часть значения переменной перед '_'

У меня есть данные, которые выглядят так:

Linking <- data.frame(
  ID = c(round((runif(20, min=10000, max=99999)), digits=0), rep(NA,10)),
  PSU = c(paste("A", round((runif(20, min=10000, max=99999)), digits = 0), sep = ''), rep(NA,10)),
  qtr = c(rep(1:10, 2), rep(NA,10)), 
  date = rep("13/04/56", 30),
  Direct = rep(c('D','M','U','U','M'), 6),
  stringsAsFactors = F)

Linking$Key <- paste(Linking$ID, Linking$PSU, Linking$qtr, sep='_')
Linking$Key[c(21:30)] <- c("87654_A15467_1", "45623_A23456_2", "67891_A12345_4", "65346_A23987_7", 
                       "E3456782_A456321_6", "E3421986_A34564_8", "E9859873_A123456_9", "E3452_A12345_6", "R765498765_A455634_2", "54678_A12345_5")

Я хочу извлечь отдельные части переменной «Ключ», чтобы заполнить идентификатор, PSU и qtr, где эти значения NA.

Я могу использовать этот код:

 test <- filter(Linking, is.na(ID)) %>%
 select(Key)
 test2 <- data.frame(do.call(rbind, strsplit(test$Key, "_")), test$Key)
 names(test2) <- c("ID", "PSU", "qtr", "Key")

Чтобы извлечь информацию, которая мне нужна для идентификатора, PSU и qtr, где есть значения NA. Но как мне добавить это обратно в исходный набор данных «Связывание»? Слияние не сработает, потому что я получу два значения для PSU, ID и qtr (N и реальное значение)

Я задал аналогичный вопрос здесь -r">Заполните значения NA в переменной значениями из других переменных в R , но этот вопрос включает значения переменной длины и включает более полный набор данных с переменными, не только связанными с «Ключом». Спасибо.


  • Удалено ненужное требование использования substr из заголовка. strsplit и его векторизованная версия stringr::str_split лучше. Удалено na из тегов. 25.05.2018

Ответы:


1

Вот один подход:

tmp <- data.frame(do.call(rbind, strsplit(Linking$Key, "_")), Linking$Key)
names(tmp) <- names(Linking)
tmp

Это работает с тех пор, как Linking$Key содержит все необходимые данные для создания вашего data.frame.

24.05.2018
  • Я обновил свой вопрос вашим кодом и дал более полное представление о данных, с которыми я работаю; чтобы задать дополнительный вопрос. Спасибо. 25.05.2018
  • Новые материалы

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

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

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

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

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

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

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