Trulia.comのデータに基づいて郵便番号で犯罪データのデータベースを作成しようとしています。以下のコードがありますが、これまでのところ、1行のデータしか生成されません。以下のコードでは、Zipcodesは米国の郵便番号の単なるリストです。これをリスト「i」全体で実行するには、何を追加する必要があるかを誰かに教えてもらえますか?
参考までに、Truliaページの1つへのリンクを次に示します:https://www.trulia.com/real_estate/20004-Washington/crime/
更新:ダウンロード用の郵便番号は次のとおりです:https://www.dropbox.com/s/uxukqpu0v88d7tf/Zip%20Code%20Database%20wo%20Boston.xlsx?dl = 0
また、郵便番号によって犯罪統計が異なる順序で表示されることに気付いた後、今回はコードを少し変更しました。ループで郵便番号ごとに4行を生成することは可能ですか?これは現在機能しますが、データセットの最後の郵便番号のみを生成します。各郵便番号のデータが別々の行に記録されていることを確認する方法がわからないため、上書きされず、最後の郵便番号の1行だけが残ります。
助けてください!!
library(rvest)
data=data.frame(Zipcodes)
for(i in data$Zip.Code)
{
site <- paste("https://www.trulia.com/real_estate/",i,"-Boston/crime/", sep="")
site <- html(site)
crime<- data.frame(zip =i,
type =site %>% html_nodes(".brs") %>% html_text() ,
stringsAsFactors=FALSE)
}
View(crime)
そのコードが機能しない場合は、次のことを試してください。
data=data.frame(Zillow_Data_for_R_Test)
for(i in data$Zip.Code)
site <- paste("https://www.trulia.com/real_estate/",i,"-Boston/crime/", sep="")
site <- read_html(site)
crime<- data.frame(zip =i,
theft =site %>% html_nodes(".crime-text-0") %>% html_text() ,
assault =site %>% html_nodes(".crime-text-1") %>% html_text() ,
arrest =site %>% html_nodes(".crime-text-2") %>% html_text() ,
vandalism =site %>% html_nodes(".crime-text-3") %>% html_text() ,
robbery =site %>% html_nodes(".crime-text-4") %>% html_text() ,
type =site %>% html_nodes(".clearfix") %>% html_text() ,
stringsAsFactors=FALSE)
View(crime)
@ r2evansのコメントはすでに答えを提供しています。@ShanChamが実際にこれを実装する方法を尋ねたので、私は次のコードでガイドしたいと思いました。これはコメントよりも冗長であり、したがって追加のコメントとして投稿できませんでした。
library(rvest)
#only two exemplary zipcodes, could be more, of course
zipcodes <- c("02110", "02125")
crime <- lapply(zipcodes, function(z) {
site <- read_html(paste0("https://www.trulia.com/real_estate/",z,"-Boston/crime/"))
#for illustrative purposes:
#introduced as.numeric to numeric columns
#exluded some of your other columns and shortenend the current text in type
data.frame(zip = z,
theft = site %>% html_nodes(".crime-text-0") %>% html_text() %>% as.numeric(),
assault = site %>% html_nodes(".crime-text-1") %>% html_text() %>% as.numeric() ,
type = site %>% html_nodes(".clearfix") %>% html_text() %>% paste(collapse = " ") %>% substr(1, 50) ,
stringsAsFactors=FALSE)
})
class(crime)
#list
#Output are lists that can be bound together to one data.frame
crime <- do.call(rbind, crime)
#crime is a data.frame, hence, classes/types are kept
class(crime$type)
# [1] "character"
class(crime$assault)
# [1] "numeric"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加