Как переименовать имена при получении данных из JSON inR - PullRequest
1 голос
/ 11 октября 2019

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

[1] "list(\"col\")"              "list(\"col1\")"        "list(\"col2\")"         "list(\"col3\")"          "list(\"col4\")"

На данный момент я переименовываю эти понравившиеся

colnames(df) <- c("col","col1","col2","col3","col4")

Но я не знаю, получу ли я какие-либо другие столбцы в моих данных. Так как бы мне переименовать их из списка и не задавать их жестко?

1 Ответ

1 голос
/ 11 октября 2019

Не ясно, основан ли префикс list на проблеме предварительной обработки или нет. Но один из способов очистки после его создания - поиск определенных элементов с префиксом list (grep) и извлечение слов из имен столбцов с помощью sub, обновление имен столбцов путем присвоения извлеченных слов

i1 <- grep("^list", names(df))
names(df)[i1] <- sub('^list\\("([^"]+)".*', "\\1", names(df)[i1])

Здесь регулярное выражение совпадает со «списком» в начале (^) строки, за которым следует литерал ( (экранированный, поскольку он имеет особое значение), затем кавычка и затем захватсимволы, которые не заключены в кавычки ([^"]) как группа ((...)), при замене укажите обратную ссылку (\\1) захваченной группы


In tidyverse,мы можем использовать rename_at

library(dplyr)
library(stringr)
df %>%
   rename_at(vars(starts_with('list')), ~ 
            str_replace(., 'list\\("([^"]+)".*', '\\1'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...