如何在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 中执行其他常见任务: