【问题标题】:Simple R (histogram) from counted csv file [duplicate]来自计数的 csv 文件的简单 R(直方图)[重复]
【发布时间】:2013-12-04 02:01:50
【问题描述】:

大家好,我正在尝试绘制一个简单二维文件的频率图

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

我希望第一个 col(terms) 是 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.

【问题讨论】:

  • 这太疯狂了——我实际上投了赞成票,显然三个用户(帐户)投了反对票——荒谬
  • @Яaffael - 同意不赞成投票是不必要的,这是一个合理的问题,但已经在其他地方回答了
  • 仍然是个谜,为什么 read.csv(data.csv) 不是错误的来源,因为文件名没有被引用。

标签: r graph histogram frequency


【解决方案1】:

问题是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

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

【讨论】:

  • 非常感谢拉斐尔!有道理!
  • 您可能想知道在 Mac 上运行的 R 3.0.2 上的前两行代码不会引发错误。
  • 该错误确实出现在 32 位 WinXP 中的 R 2.15.1 上。
【解决方案2】:
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)

【讨论】:

  • Hi file:data 不是第一行号。 barchart 和 barplot 仍然给出错误的结果。我想要一个“条形”图,其中 term(1,5,3,9) 作为 x 轴,Y 轴上的计数与百分比?
  • 在这种情况下实际上不是问题
  • 我必须同意@Яaffael - hist(d) 会出错,你不能通过 hist 一个数据框
  • 不能将数据框传递给hist的说法不正确。如果列都是“数字”,您将获得每列的单独直方图。
猜你喜欢
  • 2018-03-16
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多