Функция уникального изменения типа данных столбцов в data.frame в R - PullRequest
1 голос
/ 10 февраля 2020

Предположим, у меня есть фрейм данных, и я получаю значения unqiue одного столбца:

df = data.frame(a = c(1,2,3,4), b = c('1','2','3','x'))
b = unique(df$b)

> b
[1] 1 2 3 x
Levels: 1 2 3 x

Когда я пытаюсь объединить уникальный вектор b и дополнительное значение:

c(b, 'xx')

Возвращает

> c(b, 'xx')
[1] "1"  "2"  "3"  "4"  "xx"

Есть ли способ получить исходные значения в кадре данных? как:

[1] "1"  "2"  "3"  "x"  "xx"

1 Ответ

1 голос
/ 10 февраля 2020

Мы можем преобразовать в character и затем объединить, чтобы избежать принуждения к целочисленным значениям хранения для factor 'b'

c(as.character(unique(b$b)), 'xx')
#[1] "1"  "2"  "3"  "x"  "xx"

Или при создании data.frame используйте stringsAsFactors = FALSE (по умолчанию это TRUE), чтобы избежать преобразования столбцов с символьными элементами в factor class

df <- data.frame(a = c(1,2,3,4), b = c('1','2','3','x'), stringsAsFactors = FALSE)

Теперь код OP будет работать

c(unique(b$b), 'xx')
...