這是 googlesheets4 包的主要 "read" 函數。它有兩個名稱,因為我們希望它在兩個上下文中有意義:
-
read_sheet()
喚起其他 table-reading 函數,例如readr::read_csv()
和readxl::read_excel()
。本例中的sheet
指的是 Google(電子表格)表。 -
根據 googlesheets4 包中使用的命名約定,
range_read()
是正確的名稱。
read_sheet()
和 range_read()
是同義詞,您可以使用其中之一。
用法
range_read(
ss,
sheet = NULL,
range = NULL,
col_names = TRUE,
col_types = NULL,
na = "",
trim_ws = TRUE,
skip = 0,
n_max = Inf,
guess_max = min(1000, n_max),
.name_repair = "unique"
)
read_sheet(
ss,
sheet = NULL,
range = NULL,
col_names = TRUE,
col_types = NULL,
na = "",
trim_ws = TRUE,
skip = 0,
n_max = Inf,
guess_max = min(1000, n_max),
.name_repair = "unique"
)
參數
- ss
-
識別 Google 表格的內容:
-
其文件 ID 作為字符串或
drive_id
-
我們可以從中恢複 id 的 URL
-
one-row
dribble
,這就是 googledrive 表示雲端硬盤文件的方式 -
googlesheets4_spreadsheet
的實例,這就是gs4_get()
返回的內容
通過
as_sheets_id()
處理。 -
- sheet
-
要閱讀的表,在 "worksheet" 或 "tab" 的意義上。您可以通過名稱(使用字符串)或位置(使用數字)來標識工作表。如果通過
range
指定工作表,則忽略。如果兩個參數都沒有指定工作表,則默認為第一個可見工作表。 - range
-
要讀取的單元格範圍。如果是
NULL
,則讀取所有非空單元格。否則,請按照 Sheets A1 notation 中的說明指定range
或使用 cell-specification 中記錄的幫助程序。 Sheets 使用相當標準的電子表格範圍表示法,盡管與 Excel 略有不同。有效範圍示例:"Sheet1!A1:B2"
、"Sheet1!A:A"
、"Sheet1!1:2"
、"Sheet1!A5:A"
、"A1:B2"
、"Sheet1"
。嚴格解釋,即使範圍強製包含前導、尾隨或嵌入的空行或列。優先於skip
、n_max
和sheet
。注意range
可以是命名範圍,如"sales_data"
,沒有任何單元格引用。 - col_names
-
TRUE
使用第一行作為列名稱,FALSE
獲取默認名稱,或使用字符向量直接提供列名稱。如果用戶提供col_types
,col_names
每列可以有一個條目,或者每個未跳過的列有一個條目。 - col_types
-
列類型。從電子表格中猜測所有內容的
NULL
或一串 readr-style 短代碼,每列一個字符或代碼。如果恰好指定了一個col_type
,則將其回收。有關更多信息,請參閱色譜柱規格。 - na
-
要解釋為缺失值的字符串的字符向量。默認情況下,空白單元格被視為缺失數據。
- trim_ws
-
邏輯性強。是否應該從單元格內容中刪除前導和尾隨空格?
- skip
-
在讀取任何內容(無論是列名還是數據)之前要跳過的最小行數。前導空行會自動跳過,因此這是一個下限。如果給出
range
,則忽略。 - n_max
-
要解析為返回的 tibble 的最大數據行數。尾隨空行將被自動跳過,因此這是結果中行數的上限。如果給出
range
,則忽略。n_max
在讀取所有非空單元格後在本地強製執行,因此,如果速度是一個問題,最好使用range
。 - guess_max
-
用於猜測列類型的最大數據行數。
- .name_repair
-
列名的處理。默認情況下,googlesheets4 確保列名稱不為空並且是唯一的。完全支持
.name_repair
,如tibble::tibble()
中所述。
色譜柱規格
列類型必須在 readr-style 短代碼的單個字符串中指定,例如"cci?l"表示“字符、字符、整數、猜測、邏輯”。這不是 googlesheets4 的 col 規範最終的結果,但它以與 readr 一致的方式滾動,並且不會重新發明任何輪子。
列類型的簡碼:
-
_
或-
:跳過。跳過的列中的數據仍然從 API 請求(此包中的高級函數是rectangle-oriented),但不會解析到數據幀輸出中。 -
?
:猜猜。猜測每個單元格的類型,然後為該列選擇一致類型。如果沒有原子類型適合所有單元格,則會創建一個列表列,其中每個單元格都會轉換為 "best" 類型的 R 對象。如果未指定列類型,即col_types = NULL
,則猜測所有類型。 -
l
:邏輯。 -
i
:整數。這種類型永遠不會從數據中猜測出來,因為工作表沒有正式的整數單元格類型。 -
d
或n
:數字,即"double"。 -
D
:日期。這種類型永遠不會從數據中猜測出來,因為日期單元格隻是帶有 "date" 格式的串行日期時間。 -
t
:一天中的時間。這種類型永遠不會從數據中猜測出來,因為時間單元隻是帶有 "time" 格式的串行日期時間。尚未實施;返回 POSIXct。 -
T
:日期時間,特別是 POSIXct。 -
c
:角色。 -
C
:單元格。這種類型是 googlesheets4 所獨有的。這將返回原始單元格數據,作為 R 列表,其中包含 Sheets API 為該單元格發送的所有內容。具有"CELL_SOMETHING"
和"SHEETS_CELL"
的 S3 類型。大多數在內部有用,但向那些想要直接訪問(例如公式和格式)的人公開。 -
L
:列表,如"list-column"。每個單元都是其發現類型的長度為 1 的原子向量。 -
後續內容:持續時間(代碼為
:
)和因子(代碼為f
)。
例子
ss <- gs4_example("deaths")
read_sheet(ss, range = "A5:F15")
#> ✔ Reading from deaths.
#> ✔ Range A5:F15.
#> # A tibble: 10 × 6
#> Name Profession Age `Has kids` `Date of birth`
#> <chr> <chr> <dbl> <lgl> <dttm>
#> 1 David Bowie musician 69 TRUE 1947-01-08 00:00:00
#> 2 Carrie Fisher actor 60 TRUE 1956-10-21 00:00:00
#> 3 Chuck Berry musician 90 TRUE 1926-10-18 00:00:00
#> 4 Bill Paxton actor 61 TRUE 1955-05-17 00:00:00
#> 5 Prince musician 57 TRUE 1958-06-07 00:00:00
#> 6 Alan Rickman actor 69 FALSE 1946-02-21 00:00:00
#> 7 Florence Henderson actor 82 TRUE 1934-02-14 00:00:00
#> 8 Harper Lee author 89 FALSE 1926-04-28 00:00:00
#> 9 Zsa Zsa Gábor actor 99 TRUE 1917-02-06 00:00:00
#> 10 George Michael musician 53 FALSE 1963-06-25 00:00:00
#> # ℹ 1 more variable: `Date of death` <dttm>
read_sheet(ss, range = "other!A5:F15", col_types = "ccilDD")
#> ✔ Reading from deaths.
#> ✔ Range ''other'!A5:F15'.
#> # A tibble: 10 × 6
#> Name Profession Age `Has kids` `Date of birth` `Date of death`
#> <chr> <chr> <int> <lgl> <date> <date>
#> 1 Vera Rubin scientist 88 TRUE 1928-07-23 2016-12-25
#> 2 Mohamed Ali athlete 74 TRUE 1942-01-17 2016-06-03
#> 3 Morley Saf… journalist 84 TRUE 1931-11-08 2016-05-19
#> 4 Fidel Cast… politician 90 TRUE 1926-08-13 2016-11-25
#> 5 Antonin Sc… lawyer 79 TRUE 1936-03-11 2016-02-13
#> 6 Jo Cox politician 41 TRUE 1974-06-22 2016-06-16
#> 7 Janet Reno lawyer 78 FALSE 1938-07-21 2016-11-07
#> 8 Gwen Ifill journalist 61 FALSE 1955-09-29 2016-11-14
#> 9 John Glenn astronaut 95 TRUE 1921-07-28 2016-12-08
#> 10 Pat Summit coach 64 TRUE 1952-06-14 2016-06-28
read_sheet(ss, range = "arts_data", col_types = "ccilDD")
#> ✔ Reading from deaths.
#> ✔ Range arts_data.
#> # A tibble: 10 × 6
#> Name Profession Age `Has kids` `Date of birth` `Date of death`
#> <chr> <chr> <int> <lgl> <date> <date>
#> 1 David Bowie musician 69 TRUE 1947-01-08 2016-01-10
#> 2 Carrie Fis… actor 60 TRUE 1956-10-21 2016-12-27
#> 3 Chuck Berry musician 90 TRUE 1926-10-18 2017-03-18
#> 4 Bill Paxton actor 61 TRUE 1955-05-17 2017-02-25
#> 5 Prince musician 57 TRUE 1958-06-07 2016-04-21
#> 6 Alan Rickm… actor 69 FALSE 1946-02-21 2016-01-14
#> 7 Florence H… actor 82 TRUE 1934-02-14 2016-11-24
#> 8 Harper Lee author 89 FALSE 1926-04-28 2016-02-19
#> 9 Zsa Zsa Gá… actor 99 TRUE 1917-02-06 2016-12-18
#> 10 George Mic… musician 53 FALSE 1963-06-25 2016-12-25
read_sheet(gs4_example("mini-gap"))
#> ✔ Reading from mini-gap.
#> ✔ Range Africa.
#> # A tibble: 5 × 6
#> country continent year lifeExp pop gdpPercap
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Algeria Africa 1952 43.1 9279525 2449.
#> 2 Angola Africa 1952 30.0 4232095 3521.
#> 3 Benin Africa 1952 38.2 1738315 1063.
#> 4 Botswana Africa 1952 47.6 442308 851.
#> 5 Burkina Faso Africa 1952 32.0 4469979 543.
read_sheet(
gs4_example("mini-gap"),
sheet = "Europe",
range = "A:D",
col_types = "ccid"
)
#> ✔ Reading from mini-gap.
#> ✔ Range ''Europe'!A:D'.
#> # A tibble: 5 × 4
#> country continent year lifeExp
#> <chr> <chr> <int> <dbl>
#> 1 Albania Europe 1952 55.2
#> 2 Austria Europe 1952 66.8
#> 3 Belgium Europe 1952 68
#> 4 Bosnia and Herzegovina Europe 1952 53.8
#> 5 Bulgaria Europe 1952 59.6
相關用法
- R googlesheets4 range_read_cells 從工作表中讀取單元格
- R googlesheets4 range_autofit 自動調整列或行以適應數據
- R googlesheets4 range_speedread 將工作表讀取為 CSV
- R googlesheets4 range_delete 刪除單元格
- R googlesheets4 range_flood 淹沒或清除一係列單元格
- R googlesheets4 range_write (覆蓋)將新數據寫入範圍
- R googlesheets4 request_generate 生成 Google Sheets API 請求
- R googlesheets4 sheet_rename 重命名(工作)表
- R googlesheets4 sheet_delete 刪除一張或多張(工作)表
- R googlesheets4 gs4_token 生成配置的令牌
- R googlesheets4 gs4_formula Google 表格公式類
- R googlesheets4 gs4_random 生成隨機工作表名稱
- R googlesheets4 gs4_user 獲取當前用戶的信息
- R googlesheets4 spread_sheet 將單元格 DataFrame 展開為電子表格形狀
- R googlesheets4 sheet_properties 獲取有關(工作)表的數據
- R googlesheets4 sheets_id Sheets_id 類
- R googlesheets4 gs4_auth_configure 編輯和查看身份驗證配置
- R googlesheets4 gs4_fodder 創建有用的電子表格填充程序
- R googlesheets4 sheet_append 將行附加到工作表
- R googlesheets4 gs4_endpoints 列出工作表端點
- R googlesheets4 gs4_auth 授權 googlesheets4
- R googlesheets4 gs4_find 查找 Google 表格
- R googlesheets4 sheet_write (覆蓋)將新數據寫入工作表
- R googlesheets4 gs4_examples 示例表
- R googlesheets4 googlesheets4-configuration 穀歌表4配置
注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Read a Sheet into a data frame。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。