推荐答案
在 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,其中包含多个年份的销售额:// www.javascriptcn.com code example library(tidyr) df <- data.frame( country = c("A", "B"), `2020` = c(100, 200), `2021` = c(150, 250) ) df_long <- df %>% pivot_longer(cols = -country, names_to = "year", values_to = "sales")结果将是一个长格式数据框,其中
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)
结果将是一个展开的数据框,恢复为原始格式。