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 翻译的基本工作原理如下:
-
按其关键列(即通过塞入列名称中的变量)拆分规范。
-
对于拆分规范中的每个部分
transmute()
data
分为以下列
-
id 列,即未旋转的列
-
关键列
-
值列,即旋转的列
-
将所有部分与
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
相关用法
- R dbplyr pivot_wider.tbl_lazy 将数据从长轴转向宽轴
- R dbplyr partial_eval 部分评估表达式。
- R dbplyr pull.tbl_sql 提取单列
- R dbplyr backend-teradata 后端:Teradata
- R dbplyr escape 转义/引用字符串。
- R dbplyr expand.tbl_lazy 扩展 SQL 表以包含所有可能的值组合
- R dbplyr distinct.tbl_lazy 子集不同/唯一行
- R dbplyr backend-sqlite 后端:SQLite
- R dbplyr build_sql 构建 SQL 字符串。
- R dbplyr mutate.tbl_lazy 创建、修改和删除列
- R dbplyr collapse.tbl_sql 计算查询的结果
- R dbplyr sql_expr 从 R 表达式生成 SQL
- R dbplyr get_returned_rows 提取并检查返回的行
- R dbplyr dbplyr_uncount “计数”数据库表
- R dbplyr count.tbl_lazy 按组计数观察值
- R dbplyr backend-odbc 后端:ODBC
- R dbplyr head.tbl_lazy 对第一行进行子集化
- R dbplyr db-quote SQL 转义/引用泛型
- R dbplyr copy_inline 在 dbplyr 查询中使用本地 DataFrame
- R dbplyr backend-oracle 后端:甲骨文
- R dbplyr backend-snowflake 后端:雪花
- R dbplyr lahman 缓存并检索 Lahman 棒球数据库的 src_sqlite。
- R dbplyr backend-redshift 后端:红移
- R dbplyr group_by.tbl_lazy 按一个或多个变量分组
- R dbplyr tbl_lazy 创建本地惰性 tibble
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Pivot data from wide to long。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。