R
googlesheets4
API
此套件最初版本為googlesheets
(已無法使用),更新後改名為googlesheets4
。
數字取名為4是根據其使用的Sheets API的版本(目前4為最新)。
Reference: Github
library(googlesheets4)
library(googledrive)
drive_find(type = "spreadsheet") %>% View() # 查看帳戶底下所有表單
三種方式連接表單API:
通常不建議直接使用URL,因為網址太長會使code看起來很髒。
read_sheet("https://docs.google.com/spreadsheets/d/1ZFxfmjlRl_kOZbwTCsAqK7sKhahh7SCnbFi-YLxUZ60/edit")
ID從哪獲取?
SPREADSHEET_ID
,其pattern為:https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=SHEET_ID
# 直接輸入Spread Sheet ID
read_sheet("1ZFxfmjlRl_kOZbwTCsAqK7sKhahh7SCnbFi-YLxUZ60")
# 使用as_sheets_id()轉換
ssid = as_sheets_id("https://docs.google.com/spreadsheets/d/1ZFxfmjlRl_kOZbwTCsAqK7sKhahh7SCnbFi-YLxUZ60/edit#gid=127301525")
read_sheet(ssid)
使用drive_get()自動轉換為表單ID
(目前測試沒有成功過,我使用Mac)
drive_get("2019BAR期初問卷 (回應)")
read_sheet("1ZFxfmjlRl_kOZbwTCsAqK7sKhahh7SCnbFi-YLxUZ60")
任務說明:
由於表單的欄位名稱是提問,將其縮短並翻譯成英文以便coding
S = read_sheet(ssid) %>%
setNames(c('time','name','id','dept','status', # 可以重新命名欄位
'r','morning','afternoon','evening'))
助教時間的選擇分為以下(5*3=15)個時段:
星期一
~星期五
)morning
, afternoon
, evening
)表單回應長相:
# A tibble: 66 x 3
morning afternoon evening
<chr> <chr> <chr>
1 星期二, 星期三, 星期四, 星期五 星期一, 星期二, 星期四 星期三
2 星期二, 星期三, 星期五 星期二, 星期三 NA
3 星期二, 星期三 星期二, 星期四 星期二, 星期三, 星期四
4 星期二, 星期四 星期四 星期二, 星期三
5 星期六, 星期天 星期二, 星期六, 星期天 星期一, 星期二, 星期四, 星期五, 星期六, 星期天
... ... ...
將資料整理成一個統計表
sapply(Q[7:9], function(v){strsplit(v, ', ') %>% unlist %>% table}) %>%
{.[c(1,3,2,6,4:5,7),]} # 重新按照星期順序排列
morning afternoon evening
星期一 28 30 30
星期二 46 41 28
星期三 33 29 54
星期四 33 46 30
星期五 27 23 17
星期六 16 19 16
星期天 15 18 16
~任務1達成~
確認修課人的系所/學制/選課狀態/R語言程度的分佈
# 系所
substr(Q$dept,1,2) %>% table %>% sort %>% data.frame
# 學制(根據學號開頭字母)
substr(Q$id,1,1) %>% table %>% sort %>% data.frame
# 選課狀態
table(Q$status)
# 是否會R
table(Q$r)
[1]
. Freq
1 EM 1
2 企研 1
3 企醫 1
4 公事 1
5 經濟 1
6 行傳 1
7 資工 1
8 醫管 1
9 中文 2
10 亞太 2
11 人管 3
12 政經 6
13 財管 6
14 資管 8
15 企管 31
[2]
. Freq
1 D 1
2 I 1
3 J 1
4 N 2
5 B 23
6 M 38
[3]
尚未選上、很想要加選 已經選上、但可能要退選 已經選上、打算修這門課
15 1 50
[4]
False True
49 15
隨機分組:一組8人,分10組
g = replicate(8, sample(1:10)) %>% as.vector # 隨機分配1~10的數字,重複8次
Q = Q %>% arrange(desc(r), desc(id)) # 會寫r的排最前面
Q$group = g[1:nrow(Q)] # 隨機分組,一組至少有1個會寫r(因為都排在前面了)
False True
1 5 2
2 6 0
3 4 2
4 6 1
5 4 2
6 5 2
7 5 1
8 5 2
9 5 2
10 6 1
檢查分組是否夠隨機
table(Q$group,Q$r) # 查看每組會寫r的人是否均勻分配
table(Q$group,substr(Q$id,1,1)) # 查看每組大學部/碩士班/國際生/在職生等比例
B D I J M N
1 3 1 0 0 3 0
2 1 0 0 0 5 0
3 2 0 0 0 4 0
4 3 0 1 0 3 0
5 2 0 0 0 4 0
6 2 0 0 1 4 0
7 2 0 0 0 2 2
8 3 0 0 0 4 0
9 3 0 0 0 4 0
10 2 0 0 0 5 0
~任務2達成~
Other Reference: Rpubs R Markdown Theme date: '`r Sys.Date()`' output: rmdformats::material # readthedown date: "`r Sys.Date()`" output: prettydoc::html_pretty:
Aug 3, 2022Reference: http://ccckmit.wikidot.com/st:test1 d = density function 連續型 p = cumulative distribution function 離散 q = quantile function r = random number generation # 累積的常態機率分布 pnorm(175, mean = 170, sd = 5) - pnorm(170, 170, 5) # 計算170到175中間的那塊常態分布面積(mean:170, x:175, sd:5)
Nov 1, 2021Reference: Michael Hahsler(2011). "recommenderlab: A Framework for Developing and Testing Recommendation Algorithms." 推薦系統基本觀念—Collaborative Filtering(協同式過濾) 1. User-based Collaborative Filtering(UBCF) Memory-based CF 採用「全部」或巨量的使用者資料去進行推薦→佔記憶體 推薦系統通常是在線上進行運算,因此上述特性會不利於演算速度 原理
Aug 24, 2020Reference: Ebook Dataset: 古騰堡書庫 Regex in R 尋找 符號 舉例
Jun 20, 2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up