R_Language 板


LINE

[關鍵字]: google 試算表 [重點摘要]: 網頁廢話版: http://yichunsung.github.io/r_notebook/notebook_for_goolesheets 因為我工作時有很多工作夥伴不懂coding、資料庫這些東西。 唯一會的就是goole試算表和execl,後來便想到乾脆用R連接google試算表 方便大家需要資料的人自己上去google試算表中抓,省去很多電話打來打去的時間 網頁版的是我寫給一些會用R的工作夥伴的筆記,想說順道分享上來。 1. 前言 直接利用R存取google試算表的資料,簡化一些不必要的操作 2. 套件安裝 利用googlesheets套件可以輕鬆地串接R與存取在雲端上的google試算表。 ※ 範例: install.packages('googlesheets') library(googlesheets) 3. 連結google帳戶 安裝好套件後,首先第一步驟是要連結你的google帳戶,在此之前你可以先去隨意於網頁 上建立一個測試用資料表,但也可以不用,googlesheets套件好用之處在於你可以完全利 用R去建立、存取和刪除你帳戶中的任何試算表。 利用這個函數googlesheets::gs_auth()建立與google帳戶的授權 ※ 範例: gs_auth(new_user = TRUE) # 與帳戶建立新的受權 gs_user() # 查看user資料 此時會自動幫你開啟瀏覽器,你必須於瀏覽器中登入你的google帳號。登入成功後瀏覽器 會顯示訊息,之後便可回到R的執行環境之下。 gs_user()這個函數可以查看該帳戶的資 訊。 4. 查看google試算表 使用gs_ls()這個函數可以直接查看該帳戶中所有可用的google試算表,如果該帳戶中無 任何可存取的試算表他就會顯示訊息告知你無任何試算表可使用 ※ 範例: gs_ls() # 查看帳戶中的google試算表list 5. 讀取 gs_tittle() : 註冊帳戶中可使用的Spreadsheet進入R,function內的參數為該 Spreadsheet名稱。 gs_read() : 讀取選擇的spreadsheet中的某個Worksheet。 利用gs_title() 註冊帳戶中一個Spreadsheets,再利用gs_read()去讀取Spreadsheet中 的其中一個worksheet,讀取後他將存成一個data frame。 ※ 範例: test_gs <- gs_title('testFile') # 讀取帳戶中名為"testFile"的 Spreadsheet UBspot <- gs_read(ss=test_gs, ws = "工作表1", skip=0) # ss = spreadSheet, ws = worksheet gs_url() : 利用連結註冊,function內的參數為該Spreadsheet的公開連結。 gs_read() : 讀取選擇的spreadsheet中的某個Worksheet。 可利用gs_url()註冊的spreadsheet分為兩類,一種是已發布的公開spreadsheet,另一種 是一般私人spreadsheet。 要利用私人的Spreadsheet,一樣需要取得帳戶授權,步驟如上面相同,只是註冊 spreadsheet時由gs_title()改成gs_url(),而已經發佈且公開的Spreadsheet則不需要帳 戶授權的步驟,因為是公開發佈的資料,所以任何人都可以透過該URL去註冊這個 Spreadsheet。 但通常公開發佈的資料表並不會開放權限給外人寫入,只有讀取功能而已。但相對地,如 果你有一份資料想要提供給超多人使用,這就是一個很好的途徑,不然私人資料表你就得 透過google的共用功能去分享給別人。 註: 網頁版有圖教學如何公開發布goole試算表 http://yichunsung.github.io/r_notebook/notebook_for_goolesheets 發佈成功後,便可以取得連結,在不需要帳戶登入或授權情況下可以註冊該spreadsheet 。除此之外,對R來說使用gs_url()最重要的場合就是讓shinyapps去讀取這個資料表,這 部分後面會有詳盡的範例。 ※ 範例: Purl <- "https://docs.google.com/spreadsheets/d/1aoXyR7foNOsSergX39cEalNGOJNBMrWbIog0d ASocpw/edit?usp=sharing" sibi_spreadsheet <- gs_url(Purl) sibidf <- gs_read(ss=sibi_spreadsheet, ws = "K3_station_list", skip=0) 6. 寫入新的資料 新增資料 ※ 範例: newdata <- data.frame(name=c("Ulaanbaatar Railway Station", "Ulaanbaatar Airport"), eng = c("Ulaanbaatar Railway Station", "Ulaanbaatar Airport"), lat = c(47.908592, 47.840388), lng = c(106.883938, 106.769976) ) gs_add_row(ss=test_gs, ws = "工作表1", input = newdata) # 新增資料 在你已授權的帳戶中建立一個新的spreadsheet。 ※ 範例: gs_new("CWB-data", ws_title = "Beiliao", input = Beiliao, trim = TRUE, verbose = FALSE) 在已註冊的Spreadsheet中新增一個新的worksheet。 ※ 範例: CWB_gs <- gs_title('CWB-data') gs_ws_new(ss = test_gs, ws_title = "Zhudong", input = test2, trim = TRUE, verbose = FALSE) 7. Shinyapps應用 把google sheets當作資料庫,而shinnyapps的server.R可以連結進去 程式碼在下面,Demo: https://yichunsung.shinyapps.io/testgooglesheets/ 這樣的東西方便性在於,未來你要更新資料,你不必在把server.R打開來重新更新code, 你可以直接上去Google Sheet增加資料就好,介面簡單直觀,對於不用R的工作夥伴而言 也非常輕鬆可以協助更新資料。 另外注意,gs_read()千萬記得放在shinyServer(function(input, output){}裡面,才會 自動更新資料 server.R: library(shiny) library(googlesheets) library(plotly) GTPurl <- "https://docs.google.com/spreadsheets/d/11VFUdSCfZahqIuaO5eAvtCyyIjpnnYkG4w7KliiY_fc/edit?usp=sharing" GTPtest <- gs_url(GTPurl) shinyServer(function(input, output) { GTPtestdf <- gs_read(ss=GTPtest, ws = "工作表1", skip=0) GTPtestdf$date <- as.Date(GTPtestdf$date) output$the_data <- renderDataTable({ GTPtestdf }) output$plotlyData <- renderPlotly({ GTPdataplotly <- plot_ly( data = GTPtestdf, x = GTPtestdf$date, y = GTPtestdf$TA_Day, type = "scatter", mode = "liners+markers" ) GTPdataplotly }) }) ui.R: library(shiny) library(googlesheets) library(plotly) shinyUI(fluidPage( titlePanel("Quick demo"), sidebarLayout( sidebarPanel( dateRangeInput("dates", label = h3("date"), start = "2017-01-01", end = "2017-01-01", format = "yyyy-mm-dd"), selectInput("title", label = h3("station"), choices = c("title1", "title2", "title3"), selected = "title1"), submitButton("Submit"), br() ), mainPanel( tabsetPanel( tabPanel("result", dataTableOutput("the_data")), tabPanel("Plot", plotlyOutput("plotlyData")) ) ) ) )) Reference https://shiny.rstudio.com/articles/persistent-data-storage.html#gsheets https://github.com/jennybc/googlesheets/issues/126 https://www.r-bloggers.com/reading-data-from-google-sheets-into-r/ https://is.gd/t7yHAm --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.162.252
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1500538749.A.549.html ※ 編輯: KKbiger (39.9.162.252), 07/20/2017 16:33:06
1F:→ clansoda: 這個package算好用,唯一的缺陷是如果你要當資料庫用 07/20 17:24
2F:→ clansoda: 在大型資料上他會慢得嚇死人,頂多是幾個MB的資料好用 07/20 17:25
3F:→ Wush978: 讀取大型的資料還OK, 但是寫入超級超級慢... 07/20 18:35
4F:→ clansoda: 而且他overwrite這塊沒有做出來,只能append跟delete 07/20 20:26
5F:→ KKbiger: 是的 寫入相當慢 07/20 22:19
6F:推 cywhale: 沒試過這樣的方式~也許有機會應用~~ 07/20 22:57







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP