Csv

如何將此 R CSV 數據聲明為數字?

  • May 7, 2017

我在 Vim csv.vim 外掛的 CSV 文件中的欄位周圍添加了空格。現在,我在將列類聲明為數字(num等)時遇到了困難。那裡有負值也會導致以下列中的問題數據可以有空欄位。數據data.csv

Test, test2, test3
   , 1    , 1
10.8, -1   , 1
1.1 , 2    , 2

程式碼

library('methods')
DF <- read.csv("/home/masi/Data/data.csv", header = T, sep = ",", colClasses=c('num','num'))

DF

輸出

Error in methods::as(data[[i]], colClasses[i]) : 
 no method or default for coercing “character” to “num”
Calls: read.csv -> read.table -> <Anonymous>
Execution halted
  • 執行時轉換為數字失敗colClasses=c('num','num')
  • 第 3 列中的輸出被認為是NA因為第二列中有一個減號 ( -1)。

R:3.3.3

AFAIKnum不是有效的原子向量R

可能的值是 NA(預設值,當使用 type.convert 時)、“NULL”(當列被跳過時)、**原子向量類之一(邏輯、整數、數字、複雜、字元、原始)**或“因子"、“日期” 或 “POSIXct”。否則需要有一個 as 方法(來自包方法)用於從“字元”轉換為指定的正式類。

如果您將其替換為以下程式碼,您的程式碼應該可以工作numeric

> DF <- read.csv("data.csv", header = T, sep = ",", colClasses=c('num','num'))Error in methods::as(data[[i]], colClasses[i]) : 
 no method or default for coercing “character” to “num”

然而

> DF <- read.csv("data.csv", header = T, sep = ",", colClasses=c('numeric','numeric'))
> 
> DF
 Test test2 test3
1   NA     1     1
2 10.8    -1     1
3  1.1     2     2
> 

引用自:https://unix.stackexchange.com/questions/363554