📜  r 将数据帧从长转换为宽 (1)

📅  最后修改于: 2023-12-03 15:04:45.878000             🧑  作者: Mango

以 'r' 将数据帧从长转换为宽

在数据处理中,经常需要将数据从“长格式(long format)”转换为“宽格式(wide format)”,也就是将数据从多行转换为多列。在R语言中,可以使用函数reshape()来完成这个操作。

准备工作

首先,我们需要准备一个数据框(data frame),用来演示数据从长格式到宽格式的转换:

# 创建数据框
df <- data.frame(
  year = c(2010, 2010, 2011, 2011),
  quarter = c(1, 2, 1, 2),
  sales = c(100, 200, 150, 250),
  profit = c(50, 80, 60, 120)
)

# 查看数据框
df

输出结果为:

  year quarter sales profit
1 2010       1   100     50
2 2010       2   200     80
3 2011       1   150     60
4 2011       2   250    120

该数据框包含了 4 年的销售额和利润信息,每年分为两个季度,每个季度有两个数值型的变量(销售额和利润)。

将数据从长格式转换为宽格式

接下来,我们可以使用reshape()函数将数据从长格式转换为宽格式。

# 转换数据框
library(reshape2)  # 加载 reshape2 包

df_wide <- dcast(df, year ~ quarter, value.var = c("sales", "profit"))

# 查看转换结果
df_wide

输出结果为:

  year sales_1 sales_2 profit_1 profit_2
1 2010     100     200       50       80
2 2011     150     250       60      120

在上面的代码中,我们使用dcast()函数将数据框df从长格式转换为宽格式,指定了转换后的列名(year,sales_1,sales_2,profit_1,profit_2)。value.var参数指定要转换的数值型变量(sales和profit)。

结论

通过reshape()函数,我们可以轻松地将数据从长格式转换为宽格式,便于后续的数据分析和可视化。需要注意的是,在使用reshape()函数时,要事先加载reshape2包。