수색…


통사론

  • (파일, 헤더 = TRUE, sep = ",", quote = "" ", dec =". ", 채우기 = 참, comment.char =" ", ...)

  • read.csv2 (파일, 헤더 = TRUE, sep = ";", quote = "" ", dec =", ", 채우기 = TRUE, comment.char =" ", ...)

  • read_csv (file, col_names = TRUE, col_types = NULL, locale = default_locale (), na = c ( "", "NA"), comment = "", trim_ws = TRUE, skip = 0, n_max = -1 , progress = interactive ())

  • stringAsFactors = FALSE, verbose = getOption ( "datatable", "auto", nrows = -1L, header = "auto", na.strings = "NA" (기본값 : "integer") dec = if (sep! = "0"), 자동 시작 = 1L, 건너 뛰기 = 0L, select = NULL, drop = NULL, colClasses = NULL, integer64 = getOption ( "datatable.integer64" ( "datatable.showProgress"), # default : TRUE 데이터를 반환합니다. ",". ",". ", col.names, check.names = FALSE, 인코딩 ="알 수 없음 ", strip.white = TRUE, showProgress = getOption table = getOption ( "datatable.fread.datatable") #default : TRUE)

매개 변수

매개 변수 세부
파일 읽을 CSV 파일의 이름
머리글 logical : .csv 파일에 열 이름이있는 머리글 행이 포함되어 있습니까?
끊다 문자 : 각 행의 셀을 구분하는 기호
인용문 문자 : 문자열을 인용하는 데 사용되는 기호
문자 : 소수 구분 기호로 사용되는 기호
가득 따르다 logical : TRUE 일 때 길이가 다른 행은 빈 필드로 채워집니다.
comment.char character : csv 파일에서 주석으로 사용되는 문자입니다. 이 문자 앞에 오는 줄은 무시됩니다.
... read.table 전달할 추가 인수

비고

일반 텍스트 형식으로 내보내는 것은 넓은 이식성을 위해 변수 클래스와 같이 데이터에 인코딩 된 많은 정보를 희생합니다. 그러한 이식성이 필요없는 경우에는 .RData 또는 Feather 와 같은 형식이 더 유용 할 수 있습니다.

다른 유형의 파일에 대한 입력 / 출력은 Input 및 Output 에서 링크 된 다른 여러 주제로 다룹니다.

.csv 파일 가져 오기

기초 R을 사용하여 가져 오기

쉼표로 구분 된 값 파일 (CSV)은 read.csv 를 래핑하지만 sep = "," 를 사용하여 구분 기호를 쉼표로 설정하는 read.table 사용하여 가져올 수 있습니다.

# get the file path of a CSV included in R's utils package
csv_path <- system.file("misc", "exDIF.csv", package = "utils")

# path will vary based on installation location
csv_path
## [1] "/Library/Frameworks/R.framework/Resources/library/utils/misc/exDIF.csv"

df <- read.csv(csv_path)

df
##    Var1 Var2
## 1  2.70    A
## 2  3.14    B
## 3 10.00    A
## 4 -7.00    A

사용자 친화적 인 옵션 인 file.choose 를 사용하면 디렉토리를 탐색 할 수 있습니다.

df <- read.csv(file.choose())

노트

  • read.table 과 달리, read.csv 기본적으로 header = TRUE 로 설정하고 첫 번째 행을 열 이름으로 사용합니다.
  • 이 모든 함수는 as.is = TRUE 또는 stringsAsFactors = FALSE 아니면 기본적으로 문자열을 factor 클래스로 변환 stringsAsFactors = FALSE .
  • read.csv2 변형의 기본값은 sep = ";" 쉼표를 소수점으로 사용하고 세미콜론을 필드 구분자로 사용하는 국가의 데이터에 사용하려면 dec = ","

패키지를 사용하여 가져 오기

readr 패키지의 read_csv 함수는 훨씬 빠른 성능, 대용량 파일의 진행률 막대 및 stringsAsFactors = FALSE 포함하여 표준 read.csv 보다 많이 사용되는 기본 옵션을 제공 stringsAsFactors = FALSE .

library(readr)

df <- read_csv(csv_path)

df
## # A tibble: 4 x 2
##    Var1  Var2
##   <dbl> <chr>
## 1  2.70     A
## 2  3.14     B
## 3 10.00     A
## 4 -7.00     A

data.table로 가져 오기

data.table 패키지는 fread 함수를 소개합니다. read.table 과 비슷하지만 일반적으로 fread 는 파일의 구분 기호를 자동으로 추측하여 더 빠르고 유연합니다.

# get the file path of a CSV included in R's utils package
csv_path <- system.file("misc", "exDIF.csv", package = "utils")

# path will vary based on R installation location
csv_path
## [1] "/Library/Frameworks/R.framework/Resources/library/utils/misc/exDIF.csv"

dt <- fread(csv_path)

dt
##     Var1 Var2
## 1:  2.70    A
## 2:  3.14    B
## 3: 10.00    A
## 4: -7.00    A

인수 input 은 다음을 나타내는 문자열입니다.

  • 파일 이름 ( 예 : "filename.csv" ),
  • 파일 ( 예 : "grep 'word' filename" )에서 작동하는 쉘 명령 또는
  • 입력 자체 ( 예 : "input1, input2 \n A, B \n C, D" ).

fread 클래스의 객체를 반환 data.table 클래스에서 상속 data.frame 의 data.table의 사용과 함께 사용하기에 적합 [] . 일반 data.table 을 반환하려면 data.table 매개 변수를 FALSE 설정 FALSE .

df <- fread(csv_path, data.table = FALSE)

class(df)
## [1] "data.frame"

df
##    Var1 Var2
## 1  2.70    A
## 2  3.14    B
## 3 10.00    A
## 4 -7.00    A

노트

  • fread 에는 read.table 과 동일한 옵션이 read.table . 한 가지 빠진 인수는 na.comment 입니다. 소스 파일에 # 있으면 원치 않는 동작이 발생할 수 있습니다.
  • fread 단지 사용 " 에 대한 quote 매개 변수입니다.
  • fread 는 변수 유형을 추측하기 위해 몇 줄을 사용합니다.

.tsv 파일을 행렬로 가져 오기 (기본 R)

많은 사람들이 파일 경로를 만들 때 file.path 사용하지 않습니다. 그러나 Windows, Mac 및 Linux 컴퓨터에서 작업하는 경우 일반적으로 paste 대신 경로를 만드는 것이 좋습니다.

FilePath <- file.path(AVariableWithFullProjectPath,"SomeSubfolder","SomeFileName.txt.gz")

Data <- as.matrix(read.table(FilePath, header=FALSE, sep ="\t"))

일반적으로 이것은 대부분의 사람들에게 충분합니다.

때로는 행렬 치수가 너무 커서 행렬을 읽는 동안 메모리 할당 절차를 고려해야합니다. 행렬을 한 행씩 읽는 것을 의미합니다.

앞의 예제를 보자.이 경우 FilePath 는 0이 아닌 값을 포함하는 79 %의 셀이있는 8970 8970 차원의 파일을 포함합니다.

system.time(expr=Data<-as.matrix(read.table(file=FilePath,header=FALSE,sep=" ") ))

system.time 은 파일을 읽는 데 267 초가 걸렸습니다.

   user  system elapsed
265.563   1.949 267.563

마찬가지로이 파일은 한 줄씩 읽을 수 있습니다.

FilePath <- "SomeFile"
connection<- gzfile(FilePath,open="r")
TableList <- list()
Counter <- 1
system.time(expr= while ( length( Vector<-as.matrix(scan(file=connection, sep=" ", nlines=1, quiet=TRUE)) ) > 0 ) {
    TableList[[Counter]]<-Vector
    Counter<-Counter+1
})
   user  system elapsed
165.976   0.060 165.941
close(connection)
system.time(expr=(Data <- do.call(rbind,TableList)))
   user  system elapsed
  0.477   0.088   0.565

또한 read.matrix 메소드를 구현하는 futile.matrix 패키지가 있습니다. 코드 자체는 예 1에서 설명한 것과 동일하게 나타납니다.

.csv 파일 내보내기

기본 R을 사용하여 내보내기

write.csv() 사용하여 데이터를 CSV 파일에 쓸 수 있습니다.

write.csv(mtcars, "mtcars.csv")

일반적으로 지정된 매개 변수에는 row.names = FALSEna = "" 됩니다.


패키지를 사용하여 내보내기

readr::write_csv 상당히보다 빠른 write.csv 및 행 이름을 기록하지 않습니다.

library(readr)

write_csv(mtcars, "mtcars.csv")

여러 csv 파일 가져 오기

files = list.files(pattern="*.csv")
data_list = lapply(files, read.table, header = TRUE)

이렇게하면 모든 파일을 읽고 목록에 추가합니다. 이후 모든 data.frame이 동일한 구조를 가지면 하나의 큰 data.frame으로 결합 될 수 있습니다.

df <- do.call(rbind, data_list)

고정 너비 파일 가져 오기

고정 너비 파일은 컬럼이 ; , 또는와 같은. 자 분리. 자로 구분되지 않는 텍스트 파일입니다 ; , 고정 문자 길이 ( 너비 )가 있어야합니다. 데이터는 대개 공백으로 채워집니다.

예 :

Column1 Column2   Column3           Column4Column5 
1647    pi        'important'       3.141596.28318
1731    euler     'quite important' 2.718285.43656
1979    answer    'The Answer.'     42     42

이 데이터 테이블이 작업 디렉토리의 로컬 파일 constants.txt 에 있다고 가정 해 봅시다.


기초 R로 가져 오기

df <- read.fwf('constants.txt', widths = c(8,10,18,7,8), header = FALSE, skip = 1)

df
#>     V1     V2                 V3         V4        V5
#> 1 1647     pi         'important'   3.14159   6.28318
#> 2 1731  euler   'quite important'   2.71828   5.43656
#> 3 1979 answer       'The Answer.'   42        42.0000

노트 :

  • 열 제목은 문자로 구분할 필요가 없습니다 ( Column4Column5 ).
  • widths 매개 변수는 각 열의 너비를 정의합니다.
  • 비 구분 머리글은 read.fwf() 읽을 수 없습니다.

reader로 가져 오기

library(readr)

df <- read_fwf('constants.txt', 
               fwf_cols(Year = 8, Name = 10, Importance = 18, Value = 7, Doubled = 8), 
               skip = 1)
df
#> # A tibble: 3 x 5
#>    Year    Name        Importance    Value  Doubled
#>    <int>   <chr>           <chr>     <dbl>    <dbl>
#> 1  1647      pi       'important'  3.14159  6.28318
#> 2  1731   euler 'quite important'  2.71828  5.43656
#> 3  1979  answer     'The Answer.' 42.00000 42.00000

노트 :

  • readr의 fwf_* 도우미 함수는 자동 추측 ( fwf_empty )을 포함하여 열 길이를 지정하는 다른 방법을 제공합니다.
  • 판독기가 기본 R보다 빠릅니다.
  • 열 제목은 데이터 파일에서 자동으로 가져올 수 없습니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow