好的,这就是我的问题。我试图从网站上删除大量数据。我的代码如下所示:
library(XML)
library(RCurl)
library(rlist)
library(rvest)
library(dplyr)
team_performance <- read.csv("C:/Users/Will/Documents/team_performance.csv")
stats_names <- read.csv("C:/Users/Will/Documents/stats_names.csv")
date_vals <- read.csv("C:/Users/Will/Documents/date_vals.csv")
teams_list <- read.csv("C:/Users/Will/Documents/teams_list.csv")
date_vals <- date_vals[[1]]
stats_names <- stats_names[[1]]
team_stats <- NULL
for(i in c(0:10)){
burner <- teams_list
burner$Year <- (2007 + i)
team_stats <- rbind(team_stats, burner)
}
names(team_stats)[[1]] <- "Team"
percent_complete <- 0
for(x in date_vals){
for(i in stats_names){
mpg_link <- getURL(paste0("https://www.teamrankings.com/ncaa- basketball/stat/",gsub(" ","-",i),"?date=",x),.opts = list(ssl.verifypeer = FALSE) )
tables <- readHTMLTable(mpg_link)
tables <- list.clean(tables, fun = is.null, recursive = FALSE)
n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
temp_data <- data.frame(tables)
temp_data$NULL.Stat <- i
names(temp_data)[3] <- temp_data$NULL.Stat[1]
names(temp_data)[2] <- "Team"
temp_data <- temp_data[,-c(4:8)]
temp_data$Year <- as.numeric(substr(as.character(x),1,4))
team_stats <- left_join(team_stats,temp_data[,-c(1,4)], by.x = "Team", by.y = "Year")
percent_complete <- percent_complete + (100/979)
print(paste(round(percent_complete,digits=2),"% complete",sep=""))
}
}
第一年(2017年)完成后,在加入完成后,我收到如下消息:
Joining, by = c("Team", "Year", "Points Per Game")
而不是像这样的消息:
Joining, by = c("Team", "Year")
为什么会发生这种情况的任何想法?
编辑:确定不再收到消息,但仍然无法切换一年。一旦它开始刮到2016年,数据就不会出现在2016年的哪个位置。
答案 0 :(得分:1)
在left_join
中,语法应为
left_join(team_stats,temp_data[,-c(1,4)], by=c(Team = "Year"))
虽然列名对连接没有意义。它基于OP的语法。
by.x
和by.x
是merge
中的参数(来自base R
)
作为可重复的例子
set.seed(24)
df1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
df2 <- data.frame(A = rep(1:3, each = 2), B = rnorm(6))
OP的方法在dplyr_0.7.4
left_join(df2, df1, by.x = 'A', by.y = 'col1')
错误:
by
是必需的,因为数据源没有共同点 变量
因为参数不匹配
left_join(df2, df1, by = c(A= "col1"))
# A B col2
#1 1 0.266021979 -0.5458808
#2 1 0.444585270 -0.5458808
#3 2 -0.466495124 0.5365853
#4 2 -0.848370044 0.5365853
#5 3 0.002311942 0.4196231
#6 3 -1.316908124 0.4196231