[問題] import/read csv/xls file (large data file)

看板R_Language作者 (金岡)時間8年前 (2017/04/18 00:15), 8年前編輯推噓1(1036)
留言37則, 3人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) 問題很多不好意思麻煩大家了,自己有稍微google過,但總理不出頭緒 [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我想要import/read csv or xlsx file,但我不清楚R的概念。 1. 如我的資料在 D:\destop\datatest.csv,我的R Script也需要放在 D:/destop/ 嘛? 2. 有什麼方式可以讓我只要設定一次路徑,將資料擺在同個資料夾方便import? 3. 為什麼常常看到 library(readxl),如果我要使用 read_excel 的 code 如 library(readxl) C1_data <- read_excel("D:\\destop\\datatest.xlsx") 4. 什麼狀況下 路徑的slide要 \\ 或 / ? 5. 假設我要import/read的資料檔案大小非常大,如下方 1.48 GB 的CSV (最主要的問題) https://aqsdr1.epa.gov/aqsweb/aqstmp/airdata/hourly_44201_2016.zip 如連結 https://aqsdr1.epa.gov/aqsweb/aqstmp/airdata/annual_all_2016.zip <- 檔案較小供作測試 有沒有什麼方法可以讓我只抓它特定的row and column (包含數字與字串) 如 我想要 import 所有的 data,但在county.name的column裡面只要有"cook","DuPage", "Kane","Kenosha","Lake","McHenry","Porter","Will"的rows就好。 6. header的字串原本有空白間距,import之後空白變成 . 我之後在處理的時候要 打 . 還是 空白? [程式範例]: #----- Source: https://aqsdr1.epa.gov/aqsweb/aqstmp/airdata/hourly_44201_2016.zip # The followings are supposed to be the header of the data set # 'State Code' 'County Code' 'Site Num' 'Parameter Code' 'POC' # 'Latitude' 'Longitude' 'Datum' 'Parameter Name' 'Date Local' # 'Time Local' 'Date GMT' 'Time GMT' 'Sample Measurement' 'Units of Measure' # 'MDL' 'Uncertainty' 'Qualifier' 'Method Type' 'Method Code' # 'Method Name' 'State Name' 'County Name' 'Date of Last Change' Ozone <- read.csv("D:\\destop\\datatest.csv") # import the data # county.name contain "cook","DuPage","Kane","Kenosha","Lake","McHenry", # "Porter","Will" Ozone <- subset(Ozone, County.Name %in% c("cook","DuPage","Kane","Kenosha","Lake","McHenry","Porter","Will")) # 如何在import的時候就只讀入這些:S [環境敘述]: R-studio [關鍵字]: read.csv read_exel -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.92.13 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492445728.A.44D.html ※ 編輯: peterwu76 (123.193.92.13), 04/18/2017 00:16:43 ※ 編輯: peterwu76 (123.193.92.13), 04/18/2017 00:17:04 ※ 編輯: peterwu76 (123.193.92.13), 04/18/2017 00:18:58

04/18 00:26, , 1F
你可以打這麼多字描述問題, 也描述的都蠻準的. 何不google
04/18 00:26, 1F

04/18 00:29, , 2F
1,2: 用相對路徑, read_excel("./data.xlsx")
04/18 00:29, 2F

04/18 00:29, , 3F
你開R script預設就會設定script在的folder為working dir
04/18 00:29, 3F

04/18 00:31, , 4F
查 getwd setwd 怎麼用
04/18 00:31, 4F

04/18 00:31, , 5F
3,4:讀excel在R中原本有很多種pkg,現在篩選到只剩幾個常用
04/18 00:31, 5F

04/18 00:32, , 6F
預設wd不一定和script位置有關喔
04/18 00:32, 6F

04/18 00:32, , 7F
readxl是其中比較快的,同作者的read_csv相信對你也有幫助
04/18 00:32, 7F

04/18 00:33, , 8F
回andrew,他看來是想要點開script就開始工作.這時是一樣
04/18 00:33, 8F

04/18 00:34, , 9F
4: R的路徑把他想成網頁就好, \已經被別的特殊字元用走
04/18 00:34, 9F

04/18 00:36, , 10F
5, data$county.name %in% c("cook","DuPage",...)
04/18 00:36, 10F

04/18 00:37, , 11F
嗯?會不會和editor有關?還是誤會你的意思了?
04/18 00:37, 11F

04/18 00:40, , 12F
感謝兩位前輩的解答!! 我1,2的問題真的太EASY,getwd
04/18 00:40, 12F

04/18 00:40, , 13F
的概念我還要再想一下
04/18 00:40, 13F

04/18 00:41, , 14F
5 的話我在試試看
04/18 00:41, 14F

04/18 00:43, , 15F
andew前輩,我是有點搞不清楚架構,如work dir
04/18 00:43, 15F

04/18 00:44, , 16F
andrew* sorry for the typo
04/18 00:44, 16F

04/18 00:46, , 17F
wd在C槽下,可以方便取用C槽下的檔案,如此而已。
04/18 00:46, 17F

04/18 00:47, , 18F
這時要取用D槽的檔案,就要把路徑寫滿,不能只是檔名。
04/18 00:47, 18F

04/18 00:47, , 19F
wd大概就是這樣的意思。
04/18 00:47, 19F

04/18 00:48, , 20F
大概是太年輕沒經歷過dos的時代... :)
04/18 00:48, 20F

04/18 00:49, , 21F
我看我哥他們使用dos,我負責玩遊戲而已XD
04/18 00:49, 21F

04/18 00:50, , 22F
setwd("D:\\destop\\") 後,getwd設相同有意義嘛?
04/18 00:50, 22F

04/18 00:51, , 23F
getwd意思是跑出來的站存檔所在的位置?
04/18 00:51, 23F

04/18 00:59, , 24F
getwd是get the current wd,沒有設定的意思喔。
04/18 00:59, 24F

04/18 00:59, , 25F
不能說「暫存」,但我覺得你大概懂了。
04/18 00:59, 25F

04/18 01:01, , 26F
感謝adnrew前輩的指導!!
04/18 01:01, 26F

04/18 01:01, , 27F
andrew* sorry for the typo again...
04/18 01:01, 27F

04/18 01:02, , 28F
別在意.
04/18 01:02, 28F

04/18 01:07, , 29F
Thank you! =]
04/18 01:07, 29F

04/18 01:08, , 30F
data$county.name %in% c( ... 這個部分 我嘗試加在
04/18 01:08, 30F

04/18 01:08, , 31F
read.csv("./daily_44201_2016.csv", data$county.name
04/18 01:08, 31F

04/18 01:09, , 32F
後面,但 恩... 還要再多看看
04/18 01:09, 32F

04/18 01:10, , 33F
如果要分行再寫,似乎就要強迫讀取1.5GB的檔案了?
04/18 01:10, 33F
※ 編輯: peterwu76 (123.193.92.13), 04/18/2017 01:30:27

04/18 02:02, , 34F
讀大檔有很多「外掛」,但1.48GB還好。
04/18 02:02, 34F

04/18 02:04, , 35F
你先練習在R怎麼subset row/column。
04/18 02:04, 35F

04/18 02:24, , 36F
1.48 GB居然可以讀入,好神奇喔! 哈哈
04/18 02:24, 36F

04/18 02:25, , 37F
subset 就解決了! 謝謝前輩指導
04/18 02:25, 37F
文章代碼(AID): #1OzEeWHD (R_Language)
文章代碼(AID): #1OzEeWHD (R_Language)