удалить двойные кавычки из факторов в кадре данных - PullRequest
0 голосов
/ 06 ноября 2018

Я получил фрейм данных для работы, где у меня есть куча переменных в качестве факторов в кавычках, таких как ""x1"".

str(df) дает мне что-то вроде этого:

$ x : Factor w/ 10 Levels "\"\"x1\"\"",..: 1 7 9 ...

Я пытался избавиться от кавычек с помощью функции gsub(), но это не сработало. Возможно, потому что я не знаю, что вставить в качестве шаблона? Было бы замечательно, если бы кто-то мог решить эту загадку и, возможно, объяснить мне, если "\"\"x1\"\"" является решением этой проблемы?

Пример для фрейма данных будет выглядеть так:

structure(list(Sent = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("\"\"Opted out\"\"", 
"\"\"Yes\"\""), class = "factor"), Responded = structure(c(2L, 
2L, 2L, 2L, 2L), .Label = c("\"\"Complete\"\"", "\"\"No\"\"", 
"\"\"Partial\"\""), class = "factor")), row.names = c(NA, -5L
), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sent", 
"Responded"))

Заранее спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018
vec = c('""x1""', '""x2""', '""x3""')
vec =  factor(vec)

levels(vec) <- gsub('["\\]', "", levels(vec))

#> vec
#[1] x1 x2 x3
#Levels: x1 x2 x3

  • Посмотрите, как я бы использовал ' в качестве оболочки, когда я хочу использовать " внутри строки.

  • Другая проблема, которая не сработала для вас, вероятно, заключалась в том, что вы не использовали атрибуты уровней, а саму переменную фактора.

  • Факторные переменные хранятся в виде 1, 2, 3,... чисел.

Поскольку вы предоставили данные, вы можете использовать: (df1 ваши данные со столбцами коэффициентов)

df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\\]',"",levels(vec)); vec})
...