R plot:从导入的.csv数据创建每个类别的图

时间:2015-11-15 20:29:17

标签: r

我获得了一个.csv数据集,其中包含按日期列出的事件列表。每个事件都发生在一个区域,有一个方法,并且可以有两个结果之一。

任何指定日期都可能发生多个事件。

我的任务是产生以下内容:

1)每天生成result1,result2,resulttotal的图 2)生成result1,result2,每个方法的结果总计的图。 3)生成result1,result2,每个区域的结果总数的图。

我可以使用其他工具来完成这些工作,但我想借此机会看看R对我有多好。

我还可以完成将数据集转换为多个数据集的任务 - 我想避免这种情况。

我可以通过使用嵌套循环来完成任务 - 我希望避免这种情况。

我尝试过以下代码的变体,但我遇到的主要问题是(针对每项任务)

1)每天获得总数 2)获得每种方法的总数 3)获得每个区域的总数

我已经发现了如何离散地处理每一行数据,而不是如何运行总计。换句话说,我可以生成条形图或线图,其中显示每个数据,但不是每个类别(日期,方法或区域)的总计。

我希望我有意义!

所以我的问题很简单:有人可以指出我正确的方向吗?如果我确定如何制作三个地块中的一个,我相信我可以推断到另外两个。我认为我不需要完整的代码,只需要朝着正确的方向努力。

#1
mydata <- read.csv("c:\\users\\jim\\downloads\\book1.csv", header=FALSE)
counts <- table(mydata$V5, mydata$V1)
barplot(counts, xlab="Date", col=c("darkblue","red"),
        legend = rownames(counts))

#2
mydata <- read.csv("c:\\users\\jim\\downloads\\book1.csv", header=FALSE)
mydata$V3 <- as.numeric(mydata$V3) 
mydata$V4 <- as.numeric(mydata$V4) 
mydata$V5 <- as.numeric(mydata$V5) 
plot(mydata$V1, mydata$V5,
      xlab = "Day", 
      ylab = "Events",
      main = "November Events",
      type = "l",
      col = "red",
     lwd=3)

Date        Method  Result1 Result2 ResultTotal Location
2015/11/01  Method1 0       3       3           Area1
2015/11/01  Method2 12      0       12          Area2
2015/11/03  Method3 0       3       3           Area1
2015/11/03  Method3 0       1       1           Area1
2015/11/04  Method1 1       0       1           Area1
2015/11/04  Method4 3       10      13          Area3
2015/11/05  Method4 5       0       5           Area4
2015/11/06  Method5 0       2       2           Area1
2015/11/06  Method3 0       1       1           Area1
2015/11/06  Method5 0       1       1           Area1
2015/11/07  Method2 12      15      27          Area5
2015/11/09  Method1 0       4       4           Area1
2015/11/09  Method3 0       1       1           Area1
2015/11/09  Method3 0       1       1           Area1
2015/11/09  Method4 3       14      17          Area6
2015/11/09  Method4 4       20      24          Area7
2015/11/12  Method4 43      240     283         Area8
2015/11/13  Method5 2       2       4           Area1
2015/11/13  Method6 19      33      52          Area5
2015/11/13  Method2 129     352     481         Area9

1 个答案:

答案 0 :(得分:0)

汇总数据的最快方式是data.table方式。在您的情况下,您将按如下方式汇总数据,此外,使用ggplot2

完成绘图
library(data.table)
dt <- as.data.table(mydata) # convert to a data.table

# aggregate data
dt[, byArea := .N, by = Location] # assuming that you want to get the number of locations...
dt[, byDate := .N, by = Date]
dt[, byMethod := .N, by = Method]

# say you want to have a barplot:
library(ggplot2)

P <- ggplot(dt, aes(x = Method, y = byMethod)) + geom_bar(stat = "identity")
P

这就是你在寻找什么?