我需要在 RStudio 3(在 Mac 上)中加載一個 ~11GB 的 CSV 檔案;這使得無法使用常規命令加載。我需要一個基于某些列值的資料子集,這應該使它易于管理。我怎樣才能:
獲取列名而不將整個檔案作為資料框加載
從此檔案中讀取單列作為串列
謝謝你。
uj5u.com熱心網友回復:
這是一種方法。
1. 列名
使用reaLines, setting讀取列名n = 1,以便僅讀取列標題行。然后scanwithsep = ","將把行分成列名。
library(sqldf)
col_names <- readLines(tmpfile, n = 1)
col_names
#[1] "mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb"
tc <- textConnection(col_names)
col_names <- scan(tc, sep = ",", what = character())
close(tc)
2. 資料
第 4 列是"hp。只讀那個帶有read.csv.sql. SQL 陳述句與sprintf.
col_names[4]
#[1] "hp"
SQL <- sprintf("select %s from file", col_names[4])
SQL
#[1] "select hp from file"
hp <- read.csv.sql(tmpfile, sql = SQL)
str(hp)
#'data.frame': 6718464 obs. of 1 variable:
# $ hp: int 110 110 93 110 175 105 245 62 95 123 ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/342616.html
