如何在r中使用melt()函数


您可以使用R中reshape2包的melt()函数将数据帧从宽格式转换为长格式。

格式包含在第一列中重复的值。

格式包含在第一列中重复的值。

例如,考虑以下两个数据集,它们包含以不同格式表示的完全相同的数据:

宽或长数据格式

Melt()函数使用以下基本语法将宽格式数据帧转换为长格式:

 melt(df, id=' team ')

id参数指定使用哪个变量作为数据帧的第一列,其值将被重复。

下面的例子展示了如何在实际中使用这个功能。

示例:如何在 R 中使用 Melt()

假设我们在 R 中有以下数据帧,目前为宽格式:

 #create data frame in wide format
df <- data. frame (team=c('A', 'B', 'C', 'D'),
                 dots=c(88, 91, 99, 94),
                 assists=c(12, 17, 24, 28),
                 rebounds=c(22, 28, 30, 31))

#view data frame
df

  team points assists rebounds
1 A 88 12 22
2 B 91 17 28
3 C 99 24 30
4 D 94 28 31

我们可以使用melt()函数快速将数据帧转换为长格式:

 library (reshape2)

#use melt() to convert data frame from wide to long format
long_df <- melt(df, id=' team ')

#view long data frame
long_df

   team variable value
1 A points 88
2 B points 91
3 C points 99
4 D points 94
5 A assists 12
6 B assists 17
7 C assists 24
8 D assists 28
9 A rebounds 22
10 B rebounds 28
11 C rebounds 30
12 D rebounds 31

请注意,数据帧现在采用长格式。

得分助攻篮板列都被压缩到称为“变量”的单个列中,而它们的值都被压缩到称为“值”的单个列中。

请随意使用names()函数重命名结果数据框的列:

 #rename columns in long_df
names(long_df) <- c(' team ', ' metric ', ' amount ')

#view updated data frame
long_df

   team metric amount
1 A points 88
2 B points 91
3 C points 99
4 D points 94
5 A assists 12
6 B assists 17
7 C assists 24
8 D assists 28
9 A rebounds 22
10 B rebounds 28
11 C rebounds 30
12 D rebounds 31

请注意,这些列已被重命名。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中过滤行
如何将数据帧转置为 R
如何在 R 中重命名数据框列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注