2016-10-03 8 views
3

URLから連結テキストファイルを取得しようとしていますが、htmlや別のフォルダでこれを行う方法がわかりません。rbind txtファイルfrom online directory(R)

これは私が試したコードですが、テキストファイルのみを表示し、thisのようなhtmlコードがたくさんあります。テキストファイルを1つのCSVファイルに結合するにはどうすればよいですか?

library(RCurl) 
url <- "http://weather.ggy.uga.edu/data/daily/" 
dir <- getURL(url, dirlistonly = T) 
filenames <- unlist(strsplit(dir,"\n")) #split into filenames 
#append the files one after another 
for (i in 1:length(filenames)) { 
file <- past(url,filenames[i],delim='') #concatenate for urly 
if (i==1){ 
cp <- read_delim(file, header=F, delim=',') 
} 
else{ 
temp <- read_delim(file,header=F,delim=',') 
cp <- rbind(cp,temp) #append to existing file 
rm(temp)# remove the temporary file 
} 
} 

答えて

1

ここで私は私のために働く必要がありますコードスニペットです。 RCurlを使ってrvestを使うのが好きです。なぜなら、それは私が学んだことだからです。この場合、html_nodes関数を使用して.txtで終わる各ファイルを分離することができました。結果テーブルには文字列として保存された時間がありますが、後でそれを修正できます。ご質問がある場合はお知らせください。

library(rvest) 
library(readr) 

url <- "http://weather.ggy.uga.edu/data/daily/" 

doc <- xml2::read_html(url) 
text <- rvest::html_text(rvest::html_nodes(doc, "tr td a:contains('.txt')")) 


# define column types of fwf data ("c" = character, "n" = number) 
ctypes <- paste0("c", paste0(rep("n",11), collapse = "")) 
data <- data.frame() 

for (i in 1:2){ 
    file <- paste0(url, text[1]) 

    date <- as.Date(read_lines(file, n_max = 1), "%m/%d/%y") 

    # Read file to determine widths 
    columns <- fwf_empty(file, skip = 3) 

    # Manually expand `solar` column to be 3 spaces wider 
    columns$begin[8] <- columns$begin[8] - 3 

    data <- rbind(data, cbind(date,read_fwf(file, columns, 
              skip = 3, col_types = ctypes))) 
} 
+0

ありがとうございました! – Dean

+0

こんにちは、何らかの理由で列9(Solar)に正しい値がありません。それは最後の桁のみを持つ。それが影響を受けた唯一の列です。これを修正する方法はありますか? – Dean

+0

これは 'fwf_empty'の問題であるようです。これは、列の終わりと始まりを決定する関数です。私は理想的ではありませんが、あなたのために働く必要があります手動修正を作成しました。 – jmartindill

関連する問題