作者peterwu76 (金岡)
看板R_Language
標題[問題] import/read csv/xls file large data file
時間Tue Apr 18 00:15:21 2017
[問題類型]:
程式諮詢(我想用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
推 Edster: 你可以打這麼多字描述問題, 也描述的都蠻準的. 何不google 04/18 00:26
→ Edster: 1,2: 用相對路徑, read_excel("./data.xlsx") 04/18 00:29
→ Edster: 你開R script預設就會設定script在的folder為working dir 04/18 00:29
→ andrew43: 查 getwd setwd 怎麼用 04/18 00:31
→ Edster: 3,4:讀excel在R中原本有很多種pkg,現在篩選到只剩幾個常用 04/18 00:31
→ andrew43: 預設wd不一定和script位置有關喔 04/18 00:32
→ Edster: readxl是其中比較快的,同作者的read_csv相信對你也有幫助 04/18 00:32
→ Edster: 回andrew,他看來是想要點開script就開始工作.這時是一樣 04/18 00:33
→ Edster: 4: R的路徑把他想成網頁就好, \已經被別的特殊字元用走 04/18 00:34
→ Edster: 5, data$county.name %in% c("cook","DuPage",...) 04/18 00:36
→ andrew43: 嗯?會不會和editor有關?還是誤會你的意思了? 04/18 00:37
→ peterwu76: 感謝兩位前輩的解答!! 我1,2的問題真的太EASY,getwd 04/18 00:40
→ peterwu76: 的概念我還要再想一下 04/18 00:40
→ peterwu76: 5 的話我在試試看 04/18 00:41
→ peterwu76: andew前輩,我是有點搞不清楚架構,如work dir 04/18 00:43
→ peterwu76: andrew* sorry for the typo 04/18 00:44
→ andrew43: wd在C槽下,可以方便取用C槽下的檔案,如此而已。 04/18 00:46
→ andrew43: 這時要取用D槽的檔案,就要把路徑寫滿,不能只是檔名。 04/18 00:47
→ andrew43: wd大概就是這樣的意思。 04/18 00:47
→ andrew43: 大概是太年輕沒經歷過dos的時代... :) 04/18 00:48
→ peterwu76: 我看我哥他們使用dos,我負責玩遊戲而已XD 04/18 00:49
→ peterwu76: setwd("D:\\destop\\") 後,getwd設相同有意義嘛? 04/18 00:50
→ peterwu76: getwd意思是跑出來的站存檔所在的位置? 04/18 00:51
→ andrew43: getwd是get the current wd,沒有設定的意思喔。 04/18 00:59
→ andrew43: 不能說「暫存」,但我覺得你大概懂了。 04/18 00:59
→ peterwu76: 感謝adnrew前輩的指導!! 04/18 01:01
→ peterwu76: andrew* sorry for the typo again... 04/18 01:01
→ andrew43: 別在意. 04/18 01:02
→ peterwu76: Thank you! =] 04/18 01:07
→ peterwu76: data$county.name %in% c( ... 這個部分 我嘗試加在 04/18 01:08
→ peterwu76: read.csv("./daily_44201_2016.csv", data$county.name 04/18 01:08
→ peterwu76: 後面,但 恩... 還要再多看看 04/18 01:09
→ peterwu76: 如果要分行再寫,似乎就要強迫讀取1.5GB的檔案了? 04/18 01:10
※ 編輯: peterwu76 (123.193.92.13), 04/18/2017 01:30:27
→ andrew43: 讀大檔有很多「外掛」,但1.48GB還好。 04/18 02:02
→ andrew43: 你先練習在R怎麼subset row/column。 04/18 02:04
→ peterwu76: 1.48 GB居然可以讀入,好神奇喔! 哈哈 04/18 02:24
→ peterwu76: subset 就解決了! 謝謝前輩指導 04/18 02:25