2016-11-18 36 views
0

私はRSOCrataパッケージを使用して、2014年から2016年までのデータをSocrataとOpen Data Networkを使用して検索することができました。これは、Center for Disease Control siteのLegionellosisの通知可能なケースについてのデータです。Webアプリケーションに関連付けられたAPIを見つけるにはどうすればよいですか?

2014年以前に残りの情報を取得するにはどうすればよいですか?

ここで私は2014年、2015年と2016年のために使用されるコードです:任意の提案が高く評価されている

#Legionellosis data 

    df.leg2014 <- read.socrata("https://data.cdc.gov/resource/cmap-p7au.json")#2014 
    df.leg2015 <- read.socrata("https://data.cdc.gov/resource/haxn-dihy.json") #2015 
    df.leg2016 <- read.socrata("https://data.cdc.gov/resource/wg57-d6dj.json") #2016 

+0

彼らはdata.cdc.govに投稿したすべては、2014年から2016年(https://data.cdc.gov/browse?limitTo=datasets&q=legionellosis&sortBy=relevance&utf8=%E2%9C%であるように見えます93)。古いデータの場合、wonder.cdc.govを経由する必要があります。 – chrismetcalf

+0

@chrismetcalはい、これは私のすべてのデータを持つワンダーアプリの生き方です。ファイルを1つずつエクスポートせずにデータを取得する方法はわかりません。助言がありますか。 – Meli

答えて

0

独自の列ヘッダーを追加し、この関数を使用して年数と週数をループする必要があります。 return an empty tableまたはデータがotherwise unavailableのいずれかの年/週のコンボがあります。また、異なる数の列を返すようです。いくつかは12、いくつかは10です。何が起こっているのか分かりません。この関数には、すべてNAの列を削除する行があります。あなたはその行をコメントしたいかもしれません。私はコード内でそれを説明しようとしました。私はそれをとてもうまくテストしなかった。

read_MMWR_table <- function(year=1997, week=18){ 
    url <- paste0("https://wonder.cdc.gov/mmwr/mmwr_reps.asp?mmwr_year=", 
       year, 
       "&mmwr_week=", 
       week, 
       "&mmwr_table=2B&request=Export&mmwr_location=") 
    tmp <- readLines(url) 
    if(grepl("DOCTYPE html", tmp[1])){ 
    ret <- data.frame() 
    print("No table returned, no data...") 
    }else{ 
    start <- which(tmp=="tab delimited data:") + 1 
    if(grepl("DOCTYPE html", tmp[1])){ 
     ret <- data.frame() 
     print("No records found for this week/year") 
    }else{ 
     end <- min(which(tmp=="")[which(tmp=="") > 20]) 
     df <- read.table(textConnection(tmp[start:end]), sep="\t", skip=19, 
         stringsAsFactors=FALSE, header=FALSE) 
     # remove all NA cols 
     df <- df[,colSums(is.na(df))<nrow(df)] 
     ret <- df 
    } 
    } 
    return(ret) 
} 

df <- read_MMWR_table(year=2001, week=12) 
> head(df) 
      V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
1 W.N. CENTRAL 2,534 3,688 61 102 11 5 2 11 14 
2  Minn. 411 723 - - 1 1 - 8 6 
3   Iowa 202 224 - - 2 2 - - - 
4   Mo. 1,013 1,803 58 98 5 2 1 3 3 
5  N. Dak.  9 11 - - - - - - - 
6  S. Dak. 47 61 - - - - - - - 
+0

このソリューションは、同僚が私がここに投稿したものと同様のようです(http://stackoverflow.com/questions/40616596/requesting-data-from-the-center-for-disease-control-using-rsocrata-or -xml-in-r)。しかし、ちょうどあなたのように、レジオネラ症の場所がテーブル内で変わるので、私はウェブのこすりについて心配していました。ヘッダーが変更されたので、ヘッダーが変更されているためにWebスクラップを回避する方法を見たいと思っていました。 – Meli

+0

ここに簡単な答えはありません。データはそこにあり、私はあなたに75%の道を与える関数を提供しました。ヘッダーの読み込みはかなり簡単です。各ファイルの先頭にリストされています。あなたはいくつかの仕事をする必要があります... – cory

関連する問題