推荐答案
在 R 语言中,tidyr
包是一个用于数据整理和重塑的强大工具。以下是使用 tidyr
包进行数据整理的常见操作:
pivot_longer()
和pivot_wider()
:用于将数据从宽格式转换为长格式,或从长格式转换为宽格式。pivot_longer()
:将多列合并为一列,通常用于将宽格式数据转换为长格式。pivot_wider()
:将一列扩展为多列,通常用于将长格式数据转换为宽格式。
separate()
和unite()
:用于拆分和合并列。separate()
:将一列拆分为多列。unite()
:将多列合并为一列。
drop_na()
和replace_na()
:用于处理缺失值。drop_na()
:删除包含缺失值的行。replace_na()
:用指定值替换缺失值。
nest()
和unnest()
:用于嵌套和展开数据。nest()
:将数据分组并嵌套为列表列。unnest()
:将嵌套的列表列展开为多行。
本题详细解读
1. pivot_longer()
和 pivot_wider()
pivot_longer()
:将宽格式数据转换为长格式。例如,假设有一个数据框df
,其中包含多个年份的销售额:-- -------------------- ---- ------- -------------- -- -- ----------- ------- - ------ ----- ------ - ------ ----- ------ - ------ ---- - ------- -- -- --- ----------------- - --------- -------- - ------- --------- - --------
结果将是一个长格式数据框,其中
year
列包含年份,sales
列包含销售额。pivot_wider()
:将长格式数据转换为宽格式。例如,将上述长格式数据转换回宽格式:df_wide <- df_long %>% pivot_wider(names_from = year, values_from = sales)
2. separate()
和 unite()
separate()
:将一列拆分为多列。例如,假设有一个包含日期和时间的列:df <- data.frame(datetime = c("2020-01-01 12:00", "2021-01-01 13:00")) df_separated <- df %>% separate(datetime, into = c("date", "time"), sep = " ")
结果将是一个数据框,其中
date
列包含日期,time
列包含时间。unite()
:将多列合并为一列。例如,将上述拆分后的列合并回原来的格式:df_united <- df_separated %>% unite(datetime, date, time, sep = " ")
3. drop_na()
和 replace_na()
drop_na()
:删除包含缺失值的行。例如:df <- data.frame(a = c(1, NA, 3), b = c(4, 5, NA)) df_clean <- df %>% drop_na()
结果将是一个不包含缺失值的数据框。
replace_na()
:用指定值替换缺失值。例如:df_filled <- df %>% replace_na(list(a = 0, b = 0))
结果将是一个数据框,其中缺失值被替换为 0。
4. nest()
和 unnest()
nest()
:将数据分组并嵌套为列表列。例如:df <- data.frame(group = c("A", "A", "B", "B"), value = c(1, 2, 3, 4)) df_nested <- df %>% nest(data = value)
结果将是一个数据框,其中每个组的数据被嵌套为一个列表列。
unnest()
:将嵌套的列表列展开为多行。例如:df_unnested <- df_nested %>% unnest(data)
结果将是一个展开的数据框,恢复为原始格式。