繁体   English   中英

R:从之前对 dataframe 中相同因子水平的观察中提取数据

[英]R: Extract data from previous observation of same factor level in dataframe

我正在尝试在 dataframe 中创建应该显示给定足球队形式的列。 即各自的足球队是否赢得、平局或输掉了上一场比赛。

将下面的 dataframe 视为一系列足球比赛。 在第一场比赛中,利物浦击败了切尔西。 我想做的是用这个结果来展示利物浦在下一场比赛中的状态。 所以,当利物浦对阵莱斯特城时,我希望 HomeForm 说“W”(代表胜利),而 AwayForm 也说“W”,因为莱斯特城也赢得了上一场比赛。

一句话,问题是我不知道任何 function 告诉 R 识别一个特定因子水平(例如利物浦)的前一个(或两个)观察值,然后提取我想要的数据从一个(或两个)先前的观察中得出。

HomeTeam <- c("Liverpool", "ManCity", "ManUnited", "Tottenham", "Arsenal", "Leicester", "Chelsea", "Leeds", "Liverpool", "ManCity", "ManUnited", "Tottenham", "Arsenal", "Leicester", "Chelsea","Liverpool", "ManCity", "ManUnited", "Tottenham", "Arsenal", "Leicester", "Chelsea", "Leeds", "Liverpool", "ManCity", "ManUnited", "Tottenham", "Arsenal", "Leicester", "Chelsea")
AwayTeam <- c("Chelsea", "Tottenham", "Arsenal", "ManUnited", "Leicester", "ManCity", "Leeds", "Chelsea", "Leicester", "Liverpool", "Arsenal", "ManUnited", "Tottenham", "ManCity", "Liverpool","Chelsea", "Tottenham", "Arsenal", "ManUnited", "Leicester", "ManCity", "Leeds", "Chelsea", "Leicester", "Liverpool", "Arsenal", "ManUnited", "Tottenham", "ManCity", "Liverpool")
Result <- c("H","H","D","A","H","A","H","D","H","A","A","H","D","A","A")

data <- data.frame(HomeTeam,AwayTeam,Result)

data$HomeForm <- 0
data$AwayForm <- 0

好的,所以这段代码 1) 获取您的 dataframe 2) 将其更改为长格式 3) 滞后于结果列,从而为您提供先前的表格和 4) 返回宽格式。 希望这可以帮助。

teams <- c("Liver", "Man", "United", "Totten")
Result <- c("Home","Draw", "Away")
data <- data.frame("Home" = sample(teams, 100, replace = T),
                   "Away" = sample(teams, 100, replace = T),
                   "Result" = sample(Result, 100, replace = T))
        
data <- data[-which(data$Home == data$Away),]


data %>%
mutate("indexofgames" = 1:n()) %>%
pivot_longer(., c("Home","Away")) %>%
mutate("Result" = ifelse(Result == name, "Win", ifelse(Result == "Draw", "Draw", "Loss"))) %>%
group_by(value) %>%
arrange(indexofgames) %>%
mutate("previousform" = lag(Result)) %>%
pivot_wider(.,id_cols = indexofgames,names_from = c("name"),values_from = c("value", "previousform","Result"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM