이 R CSV 데이터를 숫자로 어떻게 선언합니까?

이 R CSV 데이터를 숫자로 어떻게 선언합니까?

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').
  • NA두 번째 열에는 마이너스 기호( )가 있으므로 -1세 번째 열의 출력은 으로 간주됩니다.

답변: 3.3.3

답변1

AFAIK가 num유효하지 않음원자 벡터 클래스존재하다 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
> 

답변2

노력하다리더trim_ws=TRUE매개변수가 포함된 패키지 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

관련 정보