當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R dbplyr pivot_longer.tbl_lazy 將數據從寬轉為長

pivot_longer() "lengthens"數據,增加行數並減少列數。逆變換為`tidyr::pivot_wider()]

vignette("pivot", "tidyr") 中了解更多信息。

雖然大多數函數相同,但與本地數據幀上的 pivot_longer() 存在一些差異:

  • 輸出的排序不同/不明確,

  • 混合列類型的強製留給數據庫,

  • values_ptypes 不支持。

請注意,build_longer_spec()pivot_longer_spec() 不適用於遠程表。

用法

# S3 method for tbl_lazy
pivot_longer(
  data,
  cols,
  ...,
  cols_vary,
  names_to = "name",
  names_prefix = NULL,
  names_sep = NULL,
  names_pattern = NULL,
  names_ptypes = NULL,
  names_transform = NULL,
  names_repair = "check_unique",
  values_to = "value",
  values_drop_na = FALSE,
  values_ptypes,
  values_transform = NULL
)

參數

data

要旋轉的 DataFrame 。

cols

列轉向更長的格式。

...

傳遞給方法的附加參數。

cols_vary

不支持;包含在內是為了與通用兼容。

names_to

一個字符串,指定要根據 data 的列名稱中存儲的數據創建的列的名稱。

names_prefix

用於從每個變量名稱開頭刪除匹配文本的正則表達式。

names_sep, names_pattern

如果 names_to 包含多個值,這些參數控製列名的分解方式。

names_ptypes

name-prototype 列對的列表。

names_transform, values_transform

name-function 列對的列表。

names_repair

如果輸出具有無效的列名稱,會發生什麽情況?

values_to

一個字符串,指定要根據單元格值中存儲的數據創建的列的名稱。如果names_to是包含特殊.value標記的字符,則該值將被忽略,並且值列的名稱將從部分現有列名稱派生。

values_drop_na

如果 TRUE ,將刪除 value_to 列中僅包含 NA 的行。

values_ptypes

不支持。

細節

SQL 翻譯的基本工作原理如下:

  1. 按其關鍵列(即通過塞入列名稱中的變量)拆分規範。

  2. 對於拆分規範中的每個部分 transmute() data 分為以下列

  • id 列,即未旋轉的列

  • 關鍵列

  • 值列,即旋轉的列

  1. 將所有部分與 union_all() 結合起來

例子

# See vignette("pivot") for examples and explanation

# Simplest case where column names are character data
memdb_frame(
  id = c("a", "b"),
  x = 1:2,
  y = 3:4
) %>%
  tidyr::pivot_longer(-id)
#> # Source:   SQL [4 x 3]
#> # Database: sqlite 3.41.2 [:memory:]
#>   id    name  value
#>   <chr> <chr> <int>
#> 1 a     x         1
#> 2 b     x         2
#> 3 a     y         3
#> 4 b     y         4

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Pivot data from wide to long。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。