如何在数据框中包含字符包含R中的数字?

时间:2015-02-10 02:35:22

标签: r rgraph

我有这个数据框

product Total
AF064   21
AF065   24
AF066   1
AF067   13
AF068   6
AF069   3
AF070   5
AF071   1
AF072   3
AF073   3
AF074   5
AF075   2
AF076   28
AF077   0
AF078   3
AF079   10
AF080   0
AF081   13
AF082   0
AF083   3
AF084   3
AF085   2
AF086   3
AF087   0
AF088   1
AF089   1
AF090   2
AF091   4
AF092   2
AF093   3
AF094   2
AF095   3
AF096   1
AF097   2
AF098   2
AF099   1
AF100   21
AF101   1
AF102   3

我想从这个数据框中制作条形图。

我的代码是

barplot(product,Total)
**Error in -0.01 * height : non-numeric argument to binary operator**

我也试过

barplot(dataframe)
**Error in barplot.default(dataframe) : 
  'height' must be a vector or a matrix**

我还尝试了as.character产品,但仍无法使用该图表。 我非常感谢你的帮助,非常感谢。

2 个答案:

答案 0 :(得分:1)

您希望barplot的参数是高度向量。你可以使用这样的东西:

barplot(dataframe[,2], names.arg=dataframe[,1])

答案 1 :(得分:0)

你的第一次尝试几乎是正确的,

attach(dataframe)
barplot(Total,names.arg=product)

会这样做。

另一种可能性是将df转换为矩阵并将其提供给barplot()函数。

barplot()函数会为矩阵的每一列绘制一个条形图,因此您需要转置数据框的立即转换

m <- t( matrix(dataframe[,2],dimnames=dataframe[1]) )
barplot(m)

如果您的数据框中有多个列(例如2到3个),您可以将它们全部放在矩阵中,如行:

m <- t(as.matrix(dataframe[,2:3]))
colnames(m) <- dataframe[,1]
barplot(m,legend=T)

至于你的上一条评论,你可以侧身转动标签并稍微调整它们的大小。即直接使用数据框

 attach(dataframe)
 barplot(Total,names.arg=product,cex.names=0.6,las=2)

或使用矩阵m

 barplot(m,cex.names=0.6,las=2)