在R数据帧中聚合数据
我有一个类似于以下内容的csv文件: 名称-年份-流派-销售 1-2005-行动-1 2-2005-行动-2 3-2005-射手-3 4-2006-RPG-2 5-2006-RPG-2 6-2007-行动-1 7-2007-射手-3 8-2007-RPG-2 我的最终目标是制作一个用R表示的沙盘,在y轴上显示每个流派的总销售额,在x轴上显示年份,标签就是流派 我需要总结每种类型每年的销售额,例如2005年的销售额将是动作:3,射击:3,RPG:0。每年都这样做 这最终会给我一个数据框,看起来像这样:在R数据帧中聚合数据,r,dataframe,R,Dataframe,我有一个类似于以下内容的csv文件: 名称-年份-流派-销售 1-2005-行动-1 2-2005-行动-2 3-2005-射手-3 4-2006-RPG-2 5-2006-RPG-2 6-2007-行动-1 7-2007-射手-3 8-2007-RPG-2 我的最终目标是制作一个用R表示的沙盘,在y轴上显示每个流派的总销售额,在x轴上显示年份,标签就是流派 我需要总结每种类型每年的销售额,例如2005年的销售额将是动作:3,射击:3,RPG:0。每年都这样做 这最终会给我一个数据框,看起来像
Action Shooter RPG
2005年3月30日
2006 0 4
2007 1 3 2
在Python中,我可以使用enumerate来实现这一点,但在R中我很难理解这一点
这是我到目前为止所拥有的
vg <- read.csv("vgdata.csv")
genres <- unique(vg$Genre)
years <- sort(unique(vg$Year))
genredf <-data.frame(vg$Genre)
i<-0
for (year in (unique(vg$Year))) {
yeardata = rep(0,length(genres))
}
vg我们可以使用xtabs
xtabs(Sales ~ Year + Genre, df1)
下面是一个基本的R解决方案,它使用重塑
+聚合
(但似乎没有xtabs
的方法那么简单)
数据
df <- structure(list(Name = 1:8, Year = c(2005L, 2005L, 2005L, 2006L,
2006L, 2007L, 2007L, 2007L), Genre = c("Action", "Action", "Shooter",
"RPG", "RPG", "Action", "Shooter", "RPG"), Sales = c(1L, 2L,
3L, 2L, 2L, 1L, 3L, 2L)), class = "data.frame", row.names = c(NA,
-8L))
df Name=1:8在这里是什么意思?@madewellmusic这是你的第一个专栏Name
,请阅读你的帖子
> dfout
Year Sales.Action Sales.RPG Sales.Shooter
1 2005 3 NA 3
2 2007 1 2 3
3 2006 NA 4 NA
df <- structure(list(Name = 1:8, Year = c(2005L, 2005L, 2005L, 2006L,
2006L, 2007L, 2007L, 2007L), Genre = c("Action", "Action", "Shooter",
"RPG", "RPG", "Action", "Shooter", "RPG"), Sales = c(1L, 2L,
3L, 2L, 2L, 1L, 3L, 2L)), class = "data.frame", row.names = c(NA,
-8L))