在r中将数据从1列分离为2列
我有一个足球队的数据集,以及他们2009-2017年的胜负结果。目前,赢家和输家都在同一列中,一列接一列,我想为输家创建一个新列 数据示例如下所示:在r中将数据从1列分离为2列,r,spread,R,Spread,我有一个足球队的数据集,以及他们2009-2017年的胜负结果。目前,赢家和输家都在同一列中,一列接一列,我想为输家创建一个新列 数据示例如下所示: Football <- data.frame ( Season = rep ("2009", 10), Team = rep (c("ARI", "ARI", "ATL", "ATL", "BAL", "BAL", "BUF", "BUF", "CAR", "CAR")), Value = c(10, 6, 7, 9,
Football <- data.frame (
Season = rep ("2009", 10),
Team = rep (c("ARI", "ARI", "ATL", "ATL", "BAL", "BAL", "BUF", "BUF", "CAR", "CAR")),
Value = c(10, 6, 7, 9, 7, 9, 6, 10, 8, 8)
)
等等。还有其他几个变量,但每个赛季/球队组合唯一变化的变量是“值”
我尝试了几次spread()和mutate()的迭代,但它们通常会生成比我想要的更多的列(即2009.Wins,2009.loss,2010.Wins,2010.loss)
谢谢你的帮助。我希望这篇文章结果不错,这是我第一次发帖
干杯,杰里米我们创建了一个“Winloss”专栏,然后以“wide”格式传播
library(tidyverse)
Football %>%
mutate(Winloss = rep(c("Win", "Loss"), n()/2)) %>%
spread(Winloss, Value)
# Season Team Loss Win
#1 2009 ARI 6 10
#2 2009 ATL 9 7
#3 2009 BAL 9 7
#4 2009 BUF 10 6
#5 2009 CAR 8 8
数据
Football使用reformate2
package
> Football$WL <- rep(c("Win", "Losses"), nrow(Football)/2)
>
> library(reshape2)
> dcast(Football, Season + Team ~ WL, value.var="Value")
Season Team Losses Win
1 2009 ARI 6 10
2 2009 ATL 9 7
3 2009 BAL 9 7
4 2009 BUF 10 6
5 2009 CAR 8 8
足球$WL
>图书馆(E2)
>dcast(足球,赛季+球队~WL,value.var=“value”)
本赛季球队输赢
2009年1月6日10
2 2009 ATL 9 7
3 2009 BAL 9 7
4 2009 BUF 10 6
5 2009年汽车8 8
所以格式不是很好,但所需输出中的每一个“2009”都应该是新行的开始,赢家和输家来自哪里?您可以使用aggregate()或Football%%>%groupby(Team)%%>%mutate(Winloss=c(“赢”、“输”))%%>%spread(Winloss,Value)
。如果任何团队有nrows,这将产生警告!=2.akrun和Renu的反应如此之快!
Football <- data.frame (
Season = rep ("2009", 10),
Team = rep (c("ARI", "ARI", "ATL", "ATL", "BAL", "BAL", "BUF", "BUF", "CAR", "CAR")),
Value = c(10, 6, 7, 9, 7, 9, 6, 10, 8, 8)
)
> Football$WL <- rep(c("Win", "Losses"), nrow(Football)/2)
>
> library(reshape2)
> dcast(Football, Season + Team ~ WL, value.var="Value")
Season Team Losses Win
1 2009 ARI 6 10
2 2009 ATL 9 7
3 2009 BAL 9 7
4 2009 BUF 10 6
5 2009 CAR 8 8