来自计数的csv文件的简单R(直方图)

时间:2013-11-20 07:25:29

标签: r graph histogram frequency

HI伙计们我正在尝试绘制一个简单的2d文件的频率图

file:data.csv
terms,count
1,10
5,17
3,28
9,30

我希望第一个col(条款)是x轴,col(count)是高度/百分比。

我试过这个:

d<-read.csv(data.csv)
hist(d)
Error in hist.default(d) : 'x' must be numeric
dc<-table(d)
hist(dc)  <-- wrong result.

2 个答案:

答案 0 :(得分:4)

问题是hist()需要一个包含对象的向量,就像它们在数据中一样。你正在提供频率表。

见:

> df <- data.frame(obj = c(1,2,3,4,5), count = c(2,3,5,4,2))

> hist(df)
Error in hist.default(df) : 'x' must be numeric

> hist(rep(df$obj, df$count), breaks=0:5)
[img]

> rep(df$obj, df$count)
 [1] 1 1 2 2 2 3 3 3 3 3 4 4 4 4 5 5

enter image description here

rep(a,n)逐个元素地重复a n - 次的值。然后你有你需要的矢量,你可以把它交给hist()

答案 1 :(得分:1)

d<-read.csv(text="terms,count
1,10
5,17
3,28
9,30")

hist(d)   # No error ... but not the plot you wanted.

data.csv周围缺少引号可能是问题,或者如果文件中的第一行真的是file:data.csv,则可能是另一个问题。但是,您确实需要barchartbarplot,因为您已经完成了计数的汇总。

说明为什么使用条形图或条形图

require(lattice)
# dividing by total "counts" to get the fractional values
 barchart(count/sum(d$count)~factor(terms), data=d)

enter image description here