R 语言 长数据转宽数据的 dcast() 与 pivot_wider() 技巧

R阿木 发布于 3 天前 3 次阅读


阿木博主一句话概括:R语言长数据转宽数据:dcast()与pivot_wider()技巧深度解析

阿木博主为你简单介绍:
在数据分析中,数据格式转换是常见的需求。将长数据格式(long format)转换为宽数据格式(wide format)是其中一种重要的转换方式。R语言提供了多种函数来实现这一转换,其中dcast()和pivot_wider()是两个常用的函数。本文将深入探讨这两个函数的使用方法、优缺点以及在实际数据分析中的应用。

一、
在R语言中,数据格式转换是数据处理的重要环节。长数据格式和宽数据格式是两种常见的数据格式。长数据格式中,每个观测值只占一行,而宽数据格式中,每个观测值可能占据多列。dcast()和pivot_wider()是R语言中用于长数据转宽数据的两个强大工具。本文将详细介绍这两个函数的使用方法、参数设置以及在实际数据分析中的应用。

二、dcast()函数
dcast()函数是R语言中用于将长数据格式转换为宽数据格式的函数。它基于data.table包,可以高效地进行数据转换。

1. 基本语法
R
dcast(data, formula, value.var, fill = NA, na.rm = FALSE, ...)

- `data`:要转换的数据框。
- `formula`:转换公式,格式为`value.var ~ key1 + key2 + ...`,其中`value.var`是数值变量,`key1, key2, ...`是用于分组的关键变量。
- `value.var`:数值变量,用于指定转换后的列。
- `fill`:填充值,用于填充缺失值。
- `na.rm`:是否删除NA值。

2. 例子
R
library(data.table)
创建长数据格式数据框
data_long <- data.table(id = 1:4, var1 = c(1, 2, 3, 4), var2 = c(5, 6, 7, 8))
使用dcast()函数转换数据格式
data_wide <- dcast(data_long, id ~ var1 + var2, value.var = "var1", fill = 0)
print(data_wide)

三、pivot_wider()函数
pivot_wider()函数是R语言中用于将长数据格式转换为宽数据格式的另一个函数。它基于tidyr包,可以方便地进行数据转换。

1. 基本语法
```R
pivot_wider(data, names_from = ..., values_from = ..., values_fill = ..., values_from_empty = ..., values_from_missing = ..., values_from_na = ..., values_from_na.rm = ..., values_from_na.rm_empty = ..., values_from_na.rm_missing = ..., values_from_na.rm_missing_empty = ..., values_from_na.rm_missing_empty_fill = ..., values_from_na.rm_missing_empty_fill_na = ..., values_from_na.rm_missing_empty_fill_na_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill_fill = ..., values_from_na.rm_missing_empty_fill_na_fill_na_fill_na_fill_fill_fill_fill_fill