Я извлекаю данные из файла json в режиме реального времени. Я должен извлечь данные с сайта и преобразовать их в один фрейм данных с одинаковыми заголовками столбцов. Поскольку это данные в реальном времени. Я не могу приспосабливать изменения кода для каждого обновления данных.
Постановка проблемы: Извлечение заголовков столбцов из информационного кадра в рамках информационного кадра (т. Е.) Получение имен столбцов внутреннего информационного кадра в дополнение к внешнему информационному фрейму. Фрейм данных имеет следующий тип (прикрепленное изображение): Часть данных выглядит следующим образом
В настоящее время я жестко кодирую имена столбцов с помощью функции colnames, но я хотел бы обобщить код для извлечения заголовки столбцов.
Description/summary of extracted file:
str(doc[[2]][[1]])
'data.frame': 3 obs. of 7 variables:
$ district : chr "North and Middle Andaman" "South Andaman" "Unknown"
$ active : int 0 5 1
$ confirmed : int 1 15 1
$ deceased : int 0 0 0
$ recovered : int 1 10 0
$ delta :'data.frame': 3 obs. of 3 variables:
..$ confirmed: int 0 0 1
..$ deceased : int 0 0 0
..$ recovered: int 0 0 0
$ state.code: chr "AN" "AN" "AN"
doc<-fromJSON("https://api.covid19india.org/v2/state_district_wise.json")
for (i in seq(1,length(doc[[1]]))){
for (j in seq(1,length(doc[[1]][[i]]))){
doc[[2]][[i]]<-doc[[2]][[i]] %>% mutate(state.code = case_when(doc[[1]][[i]]== "Kerala" ~ 'KL',doc[[1]][[i]]== "Delhi" ~ 'DL',
doc[[1]][[i]]== "Telangana" ~ 'TG',doc[[1]][[i]]== "Rajasthan" ~ 'RJ',
doc[[1]][[i]]== "Haryana" ~ 'HR',doc[[1]][[i]]== "Uttar Pradesh" ~'UP',
doc[[1]][[i]]== "Ladakh" ~ 'LA',doc[[1]][[i]]== "Tamil Nadu" ~ 'TN',
doc[[1]][[i]]== "Jammu and Kashmir" ~ 'JK',doc[[1]][[i]]== "Karnataka" ~ 'KA',
doc[[1]][[i]]== "Maharashtra" ~ 'MH',doc[[1]][[i]]== "Punjab" ~ 'PB',
doc[[1]][[i]]== "Andhra Pradesh" ~ 'AP',doc[[1]][[i]]== "Uttarakhand" ~ 'UT',
doc[[1]][[i]]== "Odisha" ~ "OR",doc[[1]][[i]]== "Puducherry" ~ 'PY',
doc[[1]][[i]]== "West Bengal" ~ 'WB',doc[[1]][[i]]== "Chandigarh" ~ 'CH',
doc[[1]][[i]]== "Chhattisgarh"~ 'CT',doc[[1]][[i]]== "Gujarat" ~ 'GJ',
doc[[1]][[i]]== "Himachal Pradesh" ~ 'HP',doc[[1]][[i]]== "Madhya Pradesh" ~ 'MP',
doc[[1]][[i]]== "Bihar" ~ 'BR' ,doc[[1]][[i]]== "Manipur" ~ 'MN',
doc[[1]][[i]]== "Mizoram" ~ 'MZ',doc[[1]][[i]]== "Goa" ~ 'GA',
doc[[1]][[i]]== "Andaman and Nicobar Islands"~'AN',doc[[1]][[i]]== "Jharkhand" ~ 'JH',
doc[[1]][[i]]== "Assam" ~ 'AS',doc[[1]][[i]]== "Arunachal Pradesh" ~ 'AR',
doc[[1]][[i]]== "Dadra and Nagar Haveli" ~ 'DN',doc[[1]][[i]]== "Tripura" ~ 'TR',
doc[[1]][[i]]== "Nagaland" ~ 'NL',doc[[1]][[i]]== "Meghalaya" ~ 'ML'))}}
single.df <- lapply(doc[[2]], function(play) # Loop through each "play"
{
# Convert each group to a data frame 34 elements each time
#tt<-data.frame(matrix(unlist(play), ncol=length(colnames(doc[[2]][[1]])), byrow=F))
tt<-data.frame(matrix(unlist(play), ncol=9, byrow=F))})
# list of data frames &connect them together 1 single dataframe
covid19.statewise <- do.call(rbind, single.df)
#colnames(covid19.statewise)<-colnames(doc[[2]][[1]])
colnames(covid19.statewise)<-c("district","active","confirmed","deceased","recovered","delta.confirmed","delta.deceased",
"delta.recovered","state.code")
#output desired:
district active confirmed deceased recovered delta.confirmed delta.deceased delta.recovered state.code
1 North and Middle Andaman 0 1 0 1 0 0 0 AN
2 South Andaman 5 15 0 10 0 0 0 AN
3 Unknown 1 1 0 0 1 0 0 AN