这是一个低级数据透视接口,受 cdata 包启发,允许您使用 DataFrame 说明数据透视。
用法
pivot_wider_spec(
data,
spec,
...,
names_repair = "check_unique",
id_cols = NULL,
id_expand = FALSE,
values_fill = NULL,
values_fn = NULL,
unused_fn = NULL,
error_call = current_env()
)
build_wider_spec(
data,
...,
names_from = name,
values_from = value,
names_prefix = "",
names_sep = "_",
names_glue = NULL,
names_sort = FALSE,
names_vary = "fastest",
names_expand = FALSE,
error_call = current_env()
)
参数
- data
-
要旋转的 DataFrame 。
- spec
-
规范 DataFrame 。这对于更复杂的数据透视非常有用,因为它使您可以更好地控制存储在列中的元数据如何成为结果中的列名称。
必须是包含字符
.name
和.value
列的 DataFrame 。spec
中的其他列应命名为与数据集长格式的列匹配,并包含与从宽格式转换的列相对应的值。特殊的.seq
变量用于在内部消除行的歧义;旋转后它会自动移除。 - ...
-
这些点用于将来的扩展,并且必须为空。
- names_repair
-
如果输出具有无效的列名称,会发生什么情况?默认情况下,如果列重复,
"check_unique"
将出错。使用"minimal"
允许输出中存在重复项,或使用"unique"
通过添加数字后缀来消除重复项。有关更多选项,请参阅vctrs::vec_as_names()
。 - id_cols
-
<
tidy-select
> 唯一标识每个观察值的一组列。默认为data
中的所有列,spec$.value
中指定的列以及spec
中未命名为.name
或.value
的列除外。通常在有冗余变量(即其值与现有变量完全相关的变量)时使用。 - id_expand
-
在旋转之前,
id_cols
列中的值是否应该扩展expand()
?这会产生更多行,输出将包含id_cols
中所有可能值的完整扩展。数据中未表示的隐性因子水平将变得显性。此外,与扩展的id_cols
对应的行值将被排序。 - values_fill
-
(可选)一个(标量)值,指定每个
value
在缺失时应填充的内容。如果您想将不同的填充值应用于不同的值列,这可以是命名列表。
- values_fn
-
(可选)应用于输出中每个单元格中的值的函数。当
id_cols
和names_from
列的组合不能唯一标识观测值时,您通常会使用此选项。如果您想将不同的聚合应用于不同的
values_from
列,这可以是命名列表。 - unused_fn
-
(可选)应用一个函数来汇总未使用列(即未由
id_cols
、names_from
或values_from
标识的列)中的值。默认情况下会从结果中删除所有未使用的列。
如果您想将不同的聚合应用于不同的未使用列,这可以是命名列表。
必须提供
id_cols
才能使unused_fn
有用,否则所有未指定的列都将被视为id_cols
。这类似于按
id_cols
进行分组,然后使用unused_fn
汇总未使用的列。 - error_call
-
当前运行函数的执行环境,例如
caller_env()
。该函数将在错误消息中作为错误源被提及。有关详细信息,请参阅abort()
的call
参数。 - names_from, values_from
-
<
tidy-select
> 一对参数,说明从哪一列(或多列)获取输出列的名称 (names_from
),以及从哪一列(或多列)获取单元格值 (values_from
)。如果
values_from
包含多个值,该值将被添加到输出列的前面。 - names_prefix
-
添加到每个变量名称开头的字符串。如果
names_from
是数值向量并且您想要创建语法变量名称,这尤其有用。 - names_sep
-
如果
names_from
或values_from
包含多个变量,这将用于将它们的值连接到单个字符串中以用作列名称。 - names_glue
-
您可以提供使用
names_from
列(和特殊的.value
)来创建自定义列名称的粘合规范,而不是names_sep
和names_prefix
。 - names_sort
-
列名应该排序吗?如果是
FALSE
(默认值),则列名称按首次出现排序。 - names_vary
-
当
names_from
标识具有多个唯一值的列(或多列),并且提供了多个values_from
列时,应按什么顺序组合结果列名称?-
"fastest"
以最快的速度改变names_from
值,从而产生以下形式的列命名方案:value1_name1, value1_name2, value2_name1, value2_name2
。这是默认设置。 -
"slowest"
以最慢的速度改变names_from
值,从而产生以下形式的列命名方案:value1_name1, value2_name1, value1_name2, value2_name2
。
-
- names_expand
-
在旋转之前,
names_from
列中的值是否应该扩展expand()
?这会产生更多列,输出将包含与names_from
中所有可能值的完整扩展相对应的列名称。数据中未表示的隐性因子水平将变得显性。此外,列名将被排序,与names_sort
生成的内容相同。
例子
# See vignette("pivot") for examples and explanation
us_rent_income
#> # A tibble: 104 × 5
#> GEOID NAME variable estimate moe
#> <chr> <chr> <chr> <dbl> <dbl>
#> 1 01 Alabama income 24476 136
#> 2 01 Alabama rent 747 3
#> 3 02 Alaska income 32940 508
#> 4 02 Alaska rent 1200 13
#> 5 04 Arizona income 27517 148
#> 6 04 Arizona rent 972 4
#> 7 05 Arkansas income 23789 165
#> 8 05 Arkansas rent 709 5
#> 9 06 California income 29454 109
#> 10 06 California rent 1358 3
#> # … with 94 more rows
spec1 <- us_rent_income %>%
build_wider_spec(names_from = variable, values_from = c(estimate, moe))
spec1
#> # A tibble: 4 × 3
#> .name .value variable
#> <chr> <chr> <chr>
#> 1 estimate_income estimate income
#> 2 estimate_rent estimate rent
#> 3 moe_income moe income
#> 4 moe_rent moe rent
us_rent_income %>%
pivot_wider_spec(spec1)
#> # A tibble: 52 × 6
#> GEOID NAME estimate_income estimate_r…¹ moe_i…² moe_r…³
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 01 Alabama 24476 747 136 3
#> 2 02 Alaska 32940 1200 508 13
#> 3 04 Arizona 27517 972 148 4
#> 4 05 Arkansas 23789 709 165 5
#> 5 06 California 29454 1358 109 3
#> 6 08 Colorado 32401 1125 109 5
#> 7 09 Connecticut 35326 1123 195 5
#> 8 10 Delaware 31560 1076 247 10
#> 9 11 District of Columbia 43198 1424 681 17
#> 10 12 Florida 25952 1077 70 3
#> # … with 42 more rows, and abbreviated variable names ¹estimate_rent,
#> # ²moe_income, ³moe_rent
# Is equivalent to
us_rent_income %>%
pivot_wider(names_from = variable, values_from = c(estimate, moe))
#> # A tibble: 52 × 6
#> GEOID NAME estimate_income estimate_r…¹ moe_i…² moe_r…³
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 01 Alabama 24476 747 136 3
#> 2 02 Alaska 32940 1200 508 13
#> 3 04 Arizona 27517 972 148 4
#> 4 05 Arkansas 23789 709 165 5
#> 5 06 California 29454 1358 109 3
#> 6 08 Colorado 32401 1125 109 5
#> 7 09 Connecticut 35326 1123 195 5
#> 8 10 Delaware 31560 1076 247 10
#> 9 11 District of Columbia 43198 1424 681 17
#> 10 12 Florida 25952 1077 70 3
#> # … with 42 more rows, and abbreviated variable names ¹estimate_rent,
#> # ²moe_income, ³moe_rent
# `pivot_wider_spec()` provides more control over column names and output format
# instead of creating columns with estimate_ and moe_ prefixes,
# keep original variable name for estimates and attach _moe as suffix
spec2 <- tibble(
.name = c("income", "rent", "income_moe", "rent_moe"),
.value = c("estimate", "estimate", "moe", "moe"),
variable = c("income", "rent", "income", "rent")
)
us_rent_income %>%
pivot_wider_spec(spec2)
#> # A tibble: 52 × 6
#> GEOID NAME income rent income_moe rent_moe
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 01 Alabama 24476 747 136 3
#> 2 02 Alaska 32940 1200 508 13
#> 3 04 Arizona 27517 972 148 4
#> 4 05 Arkansas 23789 709 165 5
#> 5 06 California 29454 1358 109 3
#> 6 08 Colorado 32401 1125 109 5
#> 7 09 Connecticut 35326 1123 195 5
#> 8 10 Delaware 31560 1076 247 10
#> 9 11 District of Columbia 43198 1424 681 17
#> 10 12 Florida 25952 1077 70 3
#> # … with 42 more rows
相关用法
- R tidyr pivot_wider 将数据从长轴转向宽轴
- R tidyr pivot_longer_spec 使用规范将数据从宽转为长
- R tidyr pivot_longer 将数据从宽转为长
- R tidyr pack 打包和拆包
- R tidyr separate_rows 将折叠的列分成多行
- R tidyr extract 使用正则表达式组将字符列提取为多列
- R tidyr chop 砍伐和砍伐
- R tidyr unnest_longer 将列表列取消嵌套到行中
- R tidyr uncount “计数” DataFrame
- R tidyr cms_patient_experience 来自医疗保险和医疗补助服务中心的数据
- R tidyr replace_na 将 NA 替换为指定值
- R tidyr unnest_wider 将列表列取消嵌套到列中
- R tidyr full_seq 在向量中创建完整的值序列
- R tidyr nest 将行嵌套到 DataFrame 的列表列中
- R tidyr separate 使用正则表达式或数字位置将字符列分成多列
- R tidyr nest_legacy Nest() 和 unnest() 的旧版本
- R tidyr separate_longer_delim 将字符串拆分为行
- R tidyr gather 将列收集到键值对中
- R tidyr hoist 将值提升到列表列之外
- R tidyr separate_wider_delim 将字符串拆分为列
- R tidyr drop_na 删除包含缺失值的行
- R tidyr fill 用上一个或下一个值填充缺失值
- R tidyr tidyr_legacy 旧名称修复
- R tidyr complete 完成缺少数据组合的 DataFrame
- R tidyr expand 扩展 DataFrame 以包含所有可能的值组合
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Pivot data from long to wide using a spec。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。