R data.table의 5 가지 편리한 옵션

data.table R 패키지의 모든 함수와 마찬가지로 fread는 빠릅니다. 매우 빠릅니다. 그러나 속도보다 두려워 할 것이 더 많습니다. 외부 데이터를 R로 가져올 때 몇 가지 유용한 기능과 옵션이 있습니다. 다음은 가장 유용한 다섯 가지입니다.

참고 : 따라하려면 //github.com/nytimes/covid-19-data/raw/master/us-counties에서 미국 카운티의 일일 Covid-19 사례에 대한 New York Times CSV 파일을 다운로드하십시오. csv.

fread의 nrows 옵션 사용

파일이 큽니까? 텍스트 편집기 나 Excel에서 열지 않고도 전체를 가져 오기 전에 구조를 검토 하시겠습니까 ? 탐색을 위해 파일의 일부만 가져 오려면 fread의 nrows옵션을 사용하십시오 .

아래 코드는 CSV의 처음 10 개 행만 가져옵니다.

mydt10 <-fread ( "us-counties.csv", nrows = 10)

데이터없이 열 이름 만보고 싶다면 nrows = 0

fread의 선택 옵션 사용

파일 구조를 알고 나면 가져올 열을 선택할있습니다 . fread의 select옵션을 사용하면 유지하려는 열을 선택할 수 있습니다. select이름 또는 열 위치 번호 의 벡터를 사용 합니다 . 이름의 경우 대부분의 문자열 벡터처럼 따옴표로 묶어야합니다.

mydt <-fread ( "us-counties.csv",

select = c ( "date", "county", "state", "cases"))

항상 그렇듯이 숫자에는 따옴표가 필요하지 않습니다.

mydt <-fread ( "us-counties.csv", select = c (1,2,3,5))

다음 코드 그룹에서 볼 수 있듯이 fread 내부의 열 이름 벡터와 함께 R 객체를 사용할 수 있습니다. 날짜, 카운티, 주 및 케이스 로 벡터 my_cols 를 만듭니다 . 그런 다음 fread 내부에서 해당 벡터를 사용합니다.

my_cols <-c ( "date", "county", "state", "cases")

mydt <-fread ( "us-counties.csv", select = my_cols)

의 반대는 select입니다 drop. 다음 과 같이로 지정한 항목을 제외한 모든 열을 가져 오도록 선택할 수 있습니다 drop.

mydt <-fread ( "us-counties.csv", drop = c ( "fips", "deaths"))

와 마찬가지로 select, drop열 이름 또는 숫자 위치의 벡터를합니다. 

grep과 함께 fread 사용

Unix에 익숙하다면  fread 내부에서 바로 명령 줄 도구를 실행할 수 있습니다 . 예를 들어 캘리포니아 데이터 만 원하는 경우 grep을 사용하여 "California"라는 텍스트가 포함 된 행만 가져올 수 있습니다. 이렇게하면 각 전체 행 을 특정 열이 아닌 텍스트 문자열로 검색 하므로 데이터가 적절한 형식이어야합니다.

ca <-fread ( "grep California us-counties.csv")

불행히도 grep은 원본 파일의 열 이름을 이해하지 못하므로 기본 이름으로 끝납니다.

head (ca) V1 V2 V3 V4 V5 V6 1 : 2020-01-25 Orange California 605910 2 : 2020-01-26 Los Angeles California 603710 3 : 2020-01-26 Orange California 605910 4 : 2020 -01-27 Los Angeles California 603710 5 : 2020-01-27 Orange California 605910 6 : 2020-01-28 Los Angeles California 603710

그러나 fread를 사용하면 col.names옵션으로 열 이름을 지정할 수 있습니다. 위에서 만든 mydt10의 이름을 기반으로 이름을 설정할 수 있습니다.

ca head (ca) 날짜 카운티 주 fips 사례 사망 1 : 2020-01-25 Orange California 605910 2 : 2020-01-26 Los Angeles California 603710 3 : 2020-01-26 Orange California 605910 4 : 2020-01-27 Los Angeles California 603710 5 : 2020-01-27 Orange California 605910 6 : 2020-01-28 Los Angeles California 603710

또한 grep의 -E옵션 과 함께 정규식을 사용 하여 한 번에 네 가지 상태를 찾는 것과 같은 더 복잡한 검색을 수행 할 수 있습니다. 

states4 <-fread (cmd = "grep -E 'Texas | Arizona | Florida | South Carolina'us-counties.csv",

col.names = 이름 (mydt10))

다시 한 번 알림 : 이것은 상태 열뿐만 아니라 행에서 각 상태 이름을 찾습니다 . 위의 코드를 실행하고 결과에 포함 된 unique(states4$state)주를 확인하면 텍사스, 애리조나, 플로리다 및 사우스 캐롤라이나와 함께 주 열에 오클라호마 및 미주리가 표시됩니다. 오클라호마와 미주리 모두 텍사스라는 카운티 가 있기 때문 입니다.

따라서 파일 가져 오기 중 grep은 매우 큰 데이터 세트에서 원하지 않는 많은 데이터를 필터링하는 방법입니다. 그러나 그것은 당신이 원하는 것을 얻는 것을 보장하지 않습니다. 이러한 종류의 가져 오기 후에도 예상치 못한 결과가 발생하지 않도록 열 데이터를 구체적으로 필터링해야합니다.

fread의 colClasses 옵션 사용

가져 오는 동안 열 클래스설정할 수 있습니다 . 모든 열이 아닌 몇 개의 열에 대해서만 설정할 수 있습니다 . 예를 들어이 데이터의 날짜 열은 연-월-일 형식이지만 문자열로 제공됩니다. 옵션을  사용하여 가져 오는 동안 date 라는 열을 Date 데이터 유형으로 설정할 수 있습니다 colClasses

mydt <-fread ( "us-counties.csv", colClasses = c ( "date"= "Date"))

이제 날짜는 날짜입니다.

> str (mydt) 'data.table'및 'data.frame'클래스 : 322651 obs. 6 개 변수 중 : $ date : 날짜, 형식 : "2020-01-21" "2020-01-22" "2020-01-23"... $ county : chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state : chr"Washington ""Washington ""Washington ""Illinois "... $ fips : int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ 케이스 : int 11111 1 111 1 ... $ 사망 : int 000000000 ...

압축 파일에 fread 사용

먼저 압축을 풀지 않고 압축 된 파일을 가져올 수 있습니다 . fread는 gz 및 bz2 파일 (예 :  mydt <- fread("myfile.gz"). zip 파일을 가져와야하는 unzip경우 구문을 사용하여 fread 내 에서 시스템 명령으로  압축을 풀 수 있습니다 mydt <- fread(cmd = 'unzip -cq myfile.zip').

더 많은 R 팁을 보려면의 Do More With R 페이지로 이동하세요.