在R数据帧中聚合数据

在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。每年都这样做 这最终会给我一个数据框,看起来像

我有一个类似于以下内容的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))