R中的CSV文件转换为直方图

8

我是R语言的新手,想从一个csv文件(只有一行数值)中创建一个直方图,其中x轴和y轴分别表示值和频率。请问有什么方法可以实现吗?

3个回答

10

我也是一个R新手,遇到了同样的问题。实际上,我犯了两个错误,现在我将把它们都描述一下。

错误1:向hist()传递频率表。 最初,我试图将一个频率表传递给hist(),而不是传入原始数据。修复此问题的一种方法是使用rep()("复制")函数将您的频率表转换为原始数据集,如此处所述:

然而,我决定只读取原始数据集而不是频率表来解决这个问题。

错误2:错误的数据类型。 我的原始数据CSV文件包含两列:hostnamebookings(想法是计算每个主机在某个给定时间段内生成的预订数量)。我将其读入表格中。

> tbl <- read.csv('bookingsdata.csv')

然后当我尝试基于第二列生成直方图时,我做了这个:

> hist(tbl[2])

这给了我你在评论中提到的“'x' must be numeric”错误。(它试图将“bookings”列标题读取为数据值。)

这样修复了它:

> hist(tbl$bookings)

6

你应该开始阅读一些基本的 R 手册...

CRAN

提供了很多手册(请查看手册和贡献部分)。

无论如何:

setwd("path/to/csv/file")
myvalues <- read.csv("filename.csv")
hist(myvalues, 100) # Example: 100 breaks, but you can specify them at will

如果需要更多帮助,请查看这些函数的手册页面(可通过?read.table?read.csv?hist访问)。


5
谢谢!我遇到一个错误“Error in hist.default(myvalues, 100) : 'x' must be numeric”。我尝试将myvalues转换为as.numeric,但似乎无效(会出现错误“Error in hist.default(myvalues) : invalid number of 'breaks'”)。你有什么想法? - zaloo
1
没有一个可重现的例子(代码+示例数据),很难说出问题出在哪里。请将dput(myvalues)的输出粘贴到您的问题上方。 - Paul Hiemstra
同意@Paul的观点,我们确实需要你的数据示例才能提供更多信息。 - nico
1
你需要类似于hist(myvalues[,1])这样的东西。 - con

4
为了绘制直方图,值必须是数字类型,即数据必须是数字。这里x的值似乎属于其他类型。
运行以下命令并查看:
sapply(myvalues[1,],class)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接