IT TIP

csv-dataset를 R로 가져 왔지만 값은 요인이됩니다.

itqueen 2020. 12. 7. 21:21
반응형

csv-dataset를 R로 가져 왔지만 값은 요인이됩니다.


R을 처음 접했고 가져온 데이터 세트에 액세스하는 데 문제가 있습니다. 저는 RStudio를 사용하고 있으며 CSV 파일을 가져올 때 데이터 세트 가져 오기 기능을 사용하고 콘솔 창에서 소스 창으로 줄을 붙여 넣었습니다. 코드는 다음과 같습니다.

setwd("c:/kalle/R")
stuckey <- read.csv("C:/kalle/R/stuckey.csv")
point <- stuckey$PTS
time <- stuckey$MP

그러나 데이터는 내가 익숙한 정수 또는 숫자가 아니지만 요인을 고려하여 변수를 플롯하려고 할 때 일반적인 플롯이 아닌 히스토그램 만 얻습니다. 데이터를 확인할 때 순서대로 보이지만 요인 형태이기 때문에 사용할 수 없습니다.


데이터 가져 오기 기능 (여기 read.csv():)과 글로벌 옵션 모두이 stringsAsFactors=FALSE문제를 해결할 수있는 방법을 제공합니다 .


기본적으로 read.csv는 데이터의 처음 몇 행을 확인하여 각 변수를 숫자로 처리할지 여부를 확인합니다. 숫자가 아닌 값을 찾으면 변수가 문자 데이터라고 가정하고 문자 변수는 인수로 변환됩니다.

데이터 세트의 PTS 및 MP 변수에 숫자가 아닌 것 같습니다.이 때문에 예기치 않은 결과가 발생합니다. 이 변수를 숫자로 강제 할 수 있습니다.

point <- as.numeric(as.character(point))
time <- as.numeric(as.character(time))

그러나 변환 할 수없는 값은 누락됩니다. (R FAQ는 factor-> 숫자 변환에 대해 약간 다른 방법을 제공하지만 그것이 무엇인지 결코 기억할 수 없습니다.)


모든 read.csv/read.*명령에 대해 전역 적으로 설정할 수 있습니다. options(stringsAsFactors=F)

그런 다음 다음과 같이 파일을 읽으십시오. my.tab <- read.table( "filename.csv", as.is=T )


csv 데이터 파일을 가져올 때 import 명령은 각 열 (;) 사이의 데이터 구분과 숫자 값에 대한 부동 숫자 구분자를 모두 반영해야합니다 (숫자 변수 = 2,5의 경우 ","이 됨).

따라서 csv를 가져 오는 명령은 더 많은 명령으로 좀 더 포괄적이어야합니다.

    stuckey <- read.csv2("C:/kalle/R/stuckey.csv", header=TRUE, sep=";", dec=",")

모든 변수를 정수 또는 숫자로 가져와야합니다.


나는 R을 처음 접했고 똑같은 문제에 직면했습니다. 하지만 내 데이터를 살펴본 결과 내 CSV 파일이 모든 숫자 열 (예 : 1233444.56 대신 1,233,444.56)에 쉼표 구분 기호 (,)를 사용했기 때문에 발생하는 것으로 나타났습니다.

csv 파일에서 쉼표 구분 기호를 제거한 다음 R로 다시로드했습니다. 이제 데이터 프레임이 모든 열을 숫자로 인식합니다.

read.csv 함수 자체 내에서이를 처리하는 방법이 있다고 확신합니다.


를 포함하는 경우에만 나에게 맞는 일 strip.white = TRUE에서 read.csv명령.

( 여기 에서 해결책을 찾았습니다 .)


나에게 해결책은 skip = 0 (파일 상단에서 건너 뛸 행 수.> 0으로 설정할 수 있음)을 포함하는 것이 었습니다.

mydata <-read.csv (file = "file.csv", header = TRUE, sep = ",", skip = 22)

참고 URL : https://stackoverflow.com/questions/5187745/imported-a-csv-dataset-to-r-but-the-values-becomes-factors

반응형