无法绘制直方图,'x'必须是数字

Jos*_*el. 25 r histogram

我有一个这种格式的数据文件:

Weight    Industry Type  
251,787   Kellogg  h  
253,9601  Kellogg  a  
256,0758  Kellogg  h  
....
Run Code Online (Sandbox Code Playgroud)

我读取数据并尝试使用以下命令绘制直方图:

 ce <- read.table("file.txt", header = TRUE)

 we = ce[,1]
 in = ce[,2]
 ty = ce[,3]

hist(we)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

错误en hist.default(we):'x'必须是数字.

为了绘制三个变量的直方图,我需要做什么?

Dir*_*tel 20

由于千位分隔符,数据将被读作"非数字".所以你需要转换它:

 we <- gsub(",", "", we)   # remove comma
 we <- as.numeric(we)      # turn into numbers
Run Code Online (Sandbox Code Playgroud)

现在你可以做到

 hist(we)
Run Code Online (Sandbox Code Playgroud)

和其他数字操作.

  • 更正:不是千位分隔符,在某些国家/地区是小数点,是逗号。因此,需要用一个点代替而不是删除它。 (2认同)
  • 有一个参数 `sep=""` 到 `read.table`、`read.csv` 等,允许你在 R 级别设置它。 (2认同)

Ski*_*rou 5

请注意,您也可以ce使用列名直接从(删除逗号后)绘图:

hist(ce$Weight)
Run Code Online (Sandbox Code Playgroud)

(与使用相反hist(ce[1]),这会导致相同的“必须是数字”错误。)

这也适用于数据库查询结果。