如何将data.frame转换为数字/矩阵并从csv文件的时间序列中创建条形图

时间:2013-07-23 14:07:39

标签: r matrix dataframe time-series bar-chart

我想制作一个Snow Data的条形图。数据存储在.csv-File中,并具有日期列和12个位置列,SWE值为整数。 为了创建条形图,数据类型必须是向量或矩阵。所以我的问题是如何将文件(data.frame)转换为矩阵并从中创建分组条形图。 X轴应为“日期”,Y轴为“SWE [mm]” 我的.csv文件看起来像这样:

Date     SB1 SB2 SB3 ...
1.1.2013 95  90  91  ...
1.2.2013 87  80  82  ...
1.3.2013 45  30  15  ...
1.4.2013 23  18  3   ...

到目前为止我试过了:

setwd("path")
swe = read.csv("name.csv", header=TRUE, sep=";")
swe$new = paste(swe$Date," ")
swe$new = strptime(swe$new, "%d.%m.%Y")
swe2 <- data.matrix(swe)
dimnames(swe2) <- NA
jpeg("swe_sb1.jpg")
barplot(swe2$Date, swe2$SWE_SB1, ..., beside = TRUE)
dev.off()

它给我错误信息:

> setwd("path")
> swe = read.csv("name.csv", header=TRUE, sep=";")
> swe$new = paste(swe$Date," ")
> swe$new = strptime(swe$new, "%d.%m.%Y")
> swe2 <- data.matrix(swe)
> dimnames(swe2) <- NA
Fehler in dimnames(swe2) <- NA : 'dimnames' muss eine Liste sein
> str(swe2)
num [1:4, 1:38] 2 1 3 4 119 117 87 118 54 35 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:38] "Date" "SWE_SB1" "SH_SB1" "SD_SB1" ...
> jpeg("swe_sb1.jpg")
> barplot(swe2$Date, swe2$SWE_SB1)
Fehler in swe2$Date : $ operator is invalid for atomic vectors
> dev.off()
jpeg:75:swe_all.jpg 
              2 

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

你这样做比这更难。 R有很好的例子来说明它的所有功能,所以?barplot可能是一个更好的起点。

无论如何,你所拥有的是一个你想要制作分组箱图的矩阵。如果您有一个类似于示例的矩阵,则可以通过键入VADeaths

来查看
Rural       Male Rural   Female     Urban Male   Urban Female
50-54       11.7         8.7        15.4         8.4
55-59       18.1         11.7       24.3         13.6
60-64       26.9         20.3       37.0         19.3
65-69       41.0         30.9       54.6         35.1
70-74       66.0         54.3       71.1         50.0

你想创建一个箱形图,你只需输入barplot(VADeaths,grouped=T)就可以了 simple bar plot

如果要切换x和y,您只需barplot(t(VADeaths),grouped=T),即可:transposed bar plot。因此,您只需使用read.csv或其他内容读取数据,转置并绘制它!

答案 1 :(得分:0)

read.csv()返回 data.frame barplot()不接受此类。

在绘制在接受的类中转换数据之前使用as.matrix()x <-as.matrix(x)