неагрегирующие объединенные уровни в факторной переменной и создание таблицы частот - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть столбец 'X1', в котором есть объединенные записи, которые необходимо преобразовать в отдельные уровни, а затем таблица частот сопутствующих уровней

элементы x1

ram [a,b, c]

pam [d, e, f]

необходимо преобразовать в

items   a   b   c   d   e   f     

ram     1   1   1   0   0   0   

pam     0   0   0   1  1   1      

pls advise

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Использование библиотеки макетов:

library(dummies)
df <- dummy.data.frame(df, names=c(“MyField1”), sep="_")

Примечание. Это разбивает исходное поле на количество уникальных значений.Исходное поле больше не доступно во фрейме данных.

Пример:

Данные:

enter image description here

после

df <- dummy.data.frame(df, names=c(“MyField1”), sep="_")

enter image description here

0 голосов
/ 25 сентября 2018

На основании показанных входных данных значения во втором столбце могут быть строкой.Один из вариантов - извлечь буквы из столбца «ram» с помощью str_extract (stringr), stack из двух столбцов data.frame, получить счетчик частоты (table) после преобразования значений.'столбец в factor с указанием levels, чтобы мы получили 0 для всех уровней, которые не найдены в наборе данных, измените его в формат' long 'с данными as.data.frame

library(stringr)
df2 <- stack(setNames(str_extract_all(df1$ram, '[a-z]'), seq_len(nrow(df1))))[2:1]
out <- as.data.frame(table(df2$ind, factor(df2$values, levels = letters[1:6])))[-1]
names(out) <- names(df1)
out
#   items ram
#1     a   1
#2     b   1
#3     c   1
#4     d   0
#5     e   0
#6     f   0

df1 <- data.frame(items = 'x1', ram = '[a,b,c]', stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...