R: преобразовать строку с разделителями в переменные

У меня есть кадр данных со столбцом, содержащим список кодов символов, разделенных пробелами:

"Ab BC" "" "XC" "N Ab FS" : 

Я хочу преобразовать это в несколько столбцов, по одному для каждого отдельного значения, указав (с 1 или 0), что это значение было найдено в списке. Желаемый результат приведен выше:

 df$Ab = 1,0,0,1 df$B = 1,0,0,0 df$C = 1,0,1,0 df$F = 0,0,0,1 df$N = 0,0,0,1 

Каков наилучший способ сделать это?

Предполагая, что вы начинаете с:

 df <- data.frame(v1 = c("Ab BC", "", "XC", "N Ab FS")) 

Вы можете попробовать cSplit_e из моего пакета splitstackshape:

 library(splitstackshape) cSplit_e(df, "v1", sep = " ", type = "character", fill = 0) # v1 v1_Ab v1_B v1_C v1_F v1_N v1_S v1_X # 1 Ab BC 1 1 1 0 0 0 0 # 2 0 0 0 0 0 0 0 # 3 XC 0 0 1 0 0 0 1 # 4 N Ab FS 1 0 0 1 1 1 0 

Можешь попробовать

 library(qdapTools) lst <- strsplit(df1$Col1, ' ') cbind(df1, mtabulate(lst)) # Col1 Ab BCFNSX #1 Ab BC 1 1 1 0 0 0 0 #2 0 0 0 0 0 0 0 #3 XC 0 0 1 0 0 0 1 #4 N Ab FS 1 0 0 1 1 1 0 

Или используя base R

 lvls <- sort(unique(unlist(lst))) cbind(df1, t(vapply(lst, function(x) table(factor(x, levels=lvls)), numeric(length(lvls))))) 

данные

 df1 <- structure(list(Col1 = c("Ab BC", "", "XC", "N Ab FS")), .Names = "Col1", row.names = c(NA, -4L), class = "data.frame") 

В базе R другой подход:

 lst = strsplit(df$Col1, ' ') cols = unique(unlist(lst)) m = do.call(rbind, lapply(lst, function(u) cols %in% u +0)) colnames(m) = cols #> m # Ab BCXNFS #[1,] 1 1 1 0 0 0 0 #[2,] 0 0 0 0 0 0 0 #[3,] 0 0 1 1 0 0 0 #[4,] 1 0 0 0 1 1 1 
  • Вычислить разницу между значениями в последовательных строках по группам
  • R усиливает местный охват
  • Извлечь последнее слово в строке в R
  • Извлечь месяц и год из зоопарка :: объект yearmon
  • Формат чисел до значительных цифр в R
  • Прочтите файл csv в R со столбцом валюты как числовой
  • Добавление нового столбца к каждому элементу в списке таблиц или фреймов данных
  • Автоматически создавать формулы для всех возможных линейных моделей
  • Суммировать строки в data.frame или matrix
  • индекс возврата из вектора значения, ближайшего к данному элементу
  • Последовательные / подвижные суммы в векторе в R
  • Interesting Posts

    WPF. Должен ли пользовательский элемент управления иметь свой собственный ViewModel?

    JasperReports: как вызвать отчет на странице jsp

    Как заменить USB-приемник беспроводной мыши в этом случае?

    Поставщик несовместим с версией клиента Oracle

    Как получить позицию курсора в bash?

    Настройте Джерси / jacksonа, чтобы НЕ использовать аннотацию поля @XmlElement для именования полей JSON

    Существующий компьютер Win7: установите Ubuntu и конвертируйте существующие Win7 в VirtualBox VM

    Что быстрее: распределение стека или выделение кучи

    jQuery, если флажок установлен

    Угловое 2: Как обнаружить изменения в массиве? (свойство @input)

    Запуск процесса в C # без отвлекающего windows консоли

    Новый ПК с одним длинным и двумя короткими звуковыми сигналами

    объекты data.table, назначенные с помощью: = из функции, не напечатанной

    Как кодировать серию изображений в H264 с использованием API x264 C?

    как отбрасывать исходные данные в базе данных Firebase

    Давайте будем гением компьютера.