這是一個低級數據透視接口,受 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。