簡體   English   中英

從R中主題的子集導入數據

[英]Import data from a subset of subjects in R

我正在處理一個包含3億行的數據集,分為5個csv文件。 該數據包含5年內用戶的體重測量值(每年一個文件)。 由於計算需要花費大量時間,因此我想與一部分用戶一起創建代碼。 我使用nrows函數僅導入每個文件的前50000行。 但是,一個用戶在2014年的文件中可能有400個體重測量值,而在2015年的文件中只有240個體重測量值。因此,當我使用nrows函數導入時,從每個文件中得到的用戶數都不相同。 我想知道是否有一種方法可以導入每個文件中前1000個用戶的數據? 所有文件中的數據如下所示:

user_ID                                         date_local    weight_kg
0002a3e897bd47a575a720b84aad6e01632d2069        2016-01-07    99.2         
0002a3e897bd47a575a720b84aad6e01632d2069        2016-02-08    99.6
0002a3e897bd47a575a720b84aad6e01632d2069        2016-02-10    99.5  
000115ff92b4f18452df4a1e5806d4dd771de64c        2016-03-13    99.1     
000115ff92b4f18452df4a1e5806d4dd771de64c        2016-04-20    78.2    
000115ff92b4f18452df4a1e5806d4dd771de64c        2016-05-02    78.3       
000115ff92b4f18452df4a1e5806d4dd771de64c        2016-05-07    78.9       
0002b526e65ecdd01f3a373988e63a44d034c5d4        2016-08-15    82.1       
0002b526e65ecdd01f3a373988e63a44d034c5d4        2016-08-22    82.6     

在此先多謝!

如果您的系統上有grep ,則可以將其與piperead.table結合使用,以僅讀取與模式匹配的行。 例如,使用示例數據,您只能讀取這樣的用戶001和002。 您需要稍后再添加標題,因為它們與模式不匹配。

mydata <- read.csv(pipe('grep "^00[12]" "mydata.csv"'), 
                     colClasses = c("character", "Date", "numeric"),
                     header = FALSE)

我不確定您的user_ID的模式是什么:您以001為例,但指出您想要第一個1000。如果是0001-1000,則grep的模式可能類似於^[01][0-9]{3}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM