Как обобщить извлечение заголовков столбцов из фрейма данных в фрейме данных? - PullRequest
0 голосов
/ 22 апреля 2020

Я извлекаю данные из файла 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...