ddply를 사용하여 데이터를 정규화하려고합니다 ('season'변수로 하위 집합).하지만 데이터의 앞부분에 시즌 변수를 삽입하고 있습니다 (열 4). 모든 데이터는 오른쪽에 있습니다.ddply 내 데이터를 재정렬합니다
저는 dplyr/plyr 세계에 처음 왔기 때문에 어떤 도움을 주시면 감사하겠습니다.
완전 재현 예 :
library(plyr)
library(dplyr)
library(XML)
library(stringr)
# File Names, Functions, Parameters, etc.
# custom functions
normalize <- function(x) {
return((x - min(x))/(max(x) - min(x)))
}
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
first_season <- 2004
last_season <- 2013
num_seasons <- as.numeric(last_season - first_season + 1)
seasons <- seq(first_season, last_season, by=1)
rm(first_season, last_season)
# Passing
passing <- data.frame()
for (i in 1:num_seasons) {
url <- paste("http://www.pro-football-reference.com/years/", seasons[i],"/passing.htm", sep = "")
df <- readHTMLTable(url,which=1)
df$season = seasons[i]
df <- df[!names(df) %in% c("QBrec") ]
if(df$season >= 2008) df <- df[!names(df) %in% c("QBR") ] # Removes QBR 2008+
passing <- rbind(passing, df)
rm(df)
print(seasons[i])
}
names(passing) <- c("rank_pfr", "nameinfo", "team", "age", "games", "games_started",
#"qb_record",
"completions", "attempts", "comp_pct", "yards_passing",
"td_passing", "td_pct", "interceptions", "int_pct", "long_passing",
"yards_pass_att", "yards_pass_att_avg", "yards_pass_comp", "yards_pass_game", "pass_rate", "sacks", "sacks_pass", "yards_net_pass_att", "yards_net_pass_att_avg", "sacks_pct", "comebacks", "game_win_drives", "season")
passing <- passing[which(passing$rank_pfr!='Rk'), ]
passing[, 4:28] <- apply(passing[,4:28], 2, as.numeric)
passing[is.na(passing)] <- 0
# Note that season is the last column (both colname and viewing the data)
# colnames(passing)
# View(passing)
passing[, 4:28] <- plyr::ddply(passing[, 4:28], .(season), colwise(normalize))
# Note that season still *appears* to be the last column
# colnames(passing)
# But when you view the data the season values have been
# inserted under age, and everything else seems to be shifted to the right
# View(passing)
감사합니다!
최소한의 작업 예제를 예기치 않은 재정렬이 발생하는 코드 행으로 제한하고 입력 데이터를'dput '으로 제공하는 것이 더 쉬울 것입니다. –
@beginneR 여러 사이트에서 데이터를 스크랩하고 있기 때문에 실제로이를 최소화하는 방법을 알지 못합니다. 게다가 충분한 코드가 없다는 이유로 과거에 비판을 받았습니다. –
오케이, 알겠습니다. 아마 당신이 아마 더 빠른 반응을 얻을 것이라고 생각했습니다. 마지막'ddply' 호출에서 당신이 설명하는 재정렬이 일어나는 것이 맞습니까? –