snmp 获取mac add table_R语言学习笔记(1)数据获取与数据重塑的第一部分
生活随笔
收集整理的這篇文章主要介紹了
snmp 获取mac add table_R语言学习笔记(1)数据获取与数据重塑的第一部分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
話接上回,怎么做這個圖
1.數據獲取:
https://github.com/CSSEGISandData/COVID-19這里只需要 "\csse_covid_19_data\csse_covid_19_daily_reports" 目錄下的每天的csv數據,其實也還有個文件夾是時間序列數據,但是疫情大熔爐US的數據沒有分各個州,做熱力圖的話那么一大片土地上只有一個紅點點沒啥意思,還是用daily_reports里的數據搞吧。GitHub可以下zip解壓,可以clone,這都不是重點。2.數據重塑:這一堆csv大概分三部分,第一部分是3月1日之前的,表格里面沒有經緯度信息,也就是今天要搞的數據;第二部分是3月1日到3月21日,有經緯度信息,US數據是按州統計;第三部分是3月21日之后的,US數據是按城市統計。試驗了一下,按城市統計的熱力圖紅點紅不起來,就全部整理成按州統計的數據,大概生成下面這樣的數據框。 Province.State Country.Region Confirmed Deaths Recovered Latitude Longitude1 South Korea 3150 16 27 36 1282 Italy 1128 29 46 43 123 Iran 593 43 123 32 534 Japan 241 5 32 36 1385 Singapore 102 0 72 1.2833 103.83336 France 100 2 12 47 2- R的數據類型
- csv->data frame
?
data_dir?'~/COVID-19/csse_covid_19_data/csse_covid_19_daily_reports/'filesfor?(f?in?files[1:39]){ #3月1日前的數據??df?"UTF-8-BOM")???df #數據重塑函數,下面寫??write.csv(df,paste0('~/covid_data/',f))?#數據框寫到另一個目錄下}得到df是下面這樣的:需要完善數據
1.添加兩列經緯度
2.把NA改成0
Province.State Country.Region Last.Update Confirmed Deaths Recovered1 Anhui M*inland China 1/22/2020 17:00 1 NA NA.14 Hubei M*inland China 1/22/2020 17:00 444 17 28.21 Macau Macau 1/22/2020 17:00 1 NA NA.32 Washington US 1/22/2020 17:00 1 NA NA.37 Thailand 1/22/2020 17:00 2 NA NA38 South Korea 1/22/2020 17:00 1 NA NA經緯度數據在https://github.com/CSSEGISandData/COVID-19有,在csse_covid_19_data/UID_ISO_FIPS_LookUp_Table.csv 里面
getLonlat function(){ geo_file'~/COVID-19/csse_covid_19_data/UID_ISO_FIPS_LookUp_Table.csv' lonlat% filter(Admin2=='') %>% select(Province_State,Country_Region,Lat,Long_) %>% filter(!is.na(Lat)) names(lonlat)'Province.State', return(lonlat)}lonlat#經緯度%>% 是管道,相當于linux里面的"|",把前面一句的結果傳遞給后面一句。上面的3-6行翻譯成人話就是:
“讀取csv的數據,再把Admin2是空的行篩選出來,再選擇Province_State, Country_Region, Lat,Long_這四列,再把Lat是空的行刪掉,最后得到的數據賦值給lonlat”
有些函數不支持管道,但是tidyverse包里的好像都可以。
lonlat里的是“China”,這里先把M*inland刪掉:
df$Country.Region$Country.Region,'M*inland ','')按省份國家合并,然后時間列刪掉:
df% ??left_join(lonlat,by=c('Province.State','Country.Region')) %>%??select(-Last.Update)關于join:
把NA改成0:
df[c('Confirmed',"Deaths","Recovered")][is.na(df[c('Confirmed',"Deaths","Recovered")])]<-0
得到df如下:
經緯度里還有NA,怎么辦?原始數據跟geo表格對不上,改好一個發現后面又對不上……算了,用map api搜吧
Province.State Country.Region Confirmed Deaths Recovered Lat Long_1 Anhui China 1 0 0 31.82570 117.22642 Beijing China 14 0 0 40.18240 116.41423 Chongqing China 6 0 0 30.05720 107.8740.14??????????Hubei??????????China???????444?????17????????28?30.97560??112.2707.36 Japan 2 0 0 36.20482 138.252937 Thailand 2 0 0 15.87003 100.992538 South Korea 1 0 0 NA NA因為地名是英文,高德百度的api不好用,這里使用了某個不存在的api,具體方法不予顯示:
get_geocode_google function(a){ #install.package('httr') #library(httr) url'https://maps.googleapis.com/maps/api/geocode/json' key'==手動滑稽==' reslist(key=key,address=a),use_proxy( json if (json$status=="ZERO_RESULTS"){return(list(lat=0,lng=0))} return(json$results[[1]]$geometry$location)}add_geo2df function(df){ for (i in 1:nrow(df)){ geo if (!exists('df_geo')){ df_geo }else{ df_geo } } return(df %>% select(-Lat,-Long_,-address) %>% bind_cols(df_geo))}df1% filter(is.na(Lat)) %>% #經緯度為空的行 mutate(address=paste(Province.State,Country.Region)) #生成新的列,用于查詢apidf1#使用api查詢經緯度df% filter(!is.na(Lat)) %>% #經緯度不為空的行 bind_rows(df1) %>% #與前面的行合并 filter(!(Lat==0&Long_==0)) #再把經緯度為0的行刪掉獲得完整數據如下:
Province.State Country.Region Confirmed Deaths Recovered Lat Long_1 Anhui China 1 0 0 31.82570 117.22642 Beijing China 14 0 0 40.18240 116.41423 Chongqing China 6 0 0 30.05720 107.8740.13 Hubei China 444 17 28 30.97560 112.2707.38 South Korea 1 0 0 35.90776 127.7669下面是目前為止的R文件,跑完應該就能獲得39個csv文件
library(tidyverse)library(httr)data_dir '~/COVID-19/csse_covid_19_daily_reports/'fileslist.files(data_dir,full.names = F)getLonlat function(){ geo_file'~/COVID-19/csse_covid_19_data/UID_ISO_FIPS_LookUp_Table.csv' lonlat% filter(Admin2=='') %>% select(Province_State,Country_Region,Lat,Long_) %>% filter(!is.na(Lat)) names(lonlat)'Province.State',??lonlat'Diamond?Princess?cruise?ship',Country.Region= Lat=35.4437,Long_=139.6380)?#手動添加鉆石公主號坐標 return(lonlat)}lonlat#經緯度dfget_geocode_googlefunction(a){ url'https://maps.googleapis.com/maps/api/geocode/json'??key'YOUR_GOOGLE_MAPS_API_KEY'? reslist(key=key,address=a),use_proxy( json if (json$status=="ZERO_RESULTS"){return(list(lat=0,lng=0))} return(json$results[[1]]$geometry$location)}#把經緯度加入數據框add_geo2dffunction(df){ for (i in 1:nrow(df)){ geo if (!exists('df_geo')){ df_geo }else{ df_geo } } return(df %>% select(-Lat,-Long_,-address) %>% bind_cols(df_geo))}dataReshape function(df){??df$Country.Region'M*inland?', df% left_join(lonlat,by=c('Province.State','Country.Region')) %>% select(-Last.Update) df[c('Confirmed',"Deaths","Recovered")][is.na(df[c('Confirmed',"Deaths","Recovered")])]<-0 df1% filter(is.na(Lat)) %>% mutate(address=paste(Province.State,Country.Region)) df1 df% filter(!is.na(Lat)) %>% bind_rows(df1) %>% filter(!(Lat==0&Long_==0))}for (f in files[1:39]){ df"UTF-8-BOM") df write.csv(df,paste0(getwd(),'/covid/',f))} 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的snmp 获取mac add table_R语言学习笔记(1)数据获取与数据重塑的第一部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大脑构造图与功能解析_解析地轨、隐藏轨推
- 下一篇: 夸克浏览器怎么安装脚本_还你清爽流畅!这