Como declarar os dados de R CSV como numéricos?

0

Eu adicionei espaços ao redor de meus campos no arquivo CSV no plug-in Vim csv.vim. Agora, estou tendo dificuldades em declarar as classes da coluna como numéricas ( num etc). Ter valores negativos também causa problemas nas colunas a seguir Os dados podem ter campos vazios. Dados data.csv

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

Código

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

DF

Saída

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
  • A conversão para numérica falha ao fazer colClasses=c('num','num') .
  • A saída na coluna 3 é considerada NA devido a uma marca de menos ( -1 ) na segunda coluna.

R: 3.3.3

    
por Léo Léopold Hertz 준영 07.05.2017 / 17:27

2 respostas

1

AFAIK num não é uma classe de vetores atômicos válida em R :

Possible values are NA (the default, when type.convert is used), "NULL" (when the column is skipped), one of the atomic vector classes (logical, integer, numeric, complex, character, raw), or "factor", "Date" or "POSIXct". Otherwise there needs to be an as method (from package methods) for conversion from "character" to the specified formal class.

Seu código deve funcionar se você substituí-lo por 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”

enquanto

> 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
> 
    
por 07.05.2017 / 19:48
1

Experimente o pacote readr com o argumento trim_ws=TRUE in read_delim() :

R> readr::read_delim("data.csv", delim=",", col_types="dii", trim_ws=TRUE)
# A tibble: 3 × 3
   Test test2 test3
  <dbl> <int> <int>
1    NA     1     1
2  10.8    -1     1
3   1.1     2     2
    
por 07.05.2017 / 17:58

Tags