R重塑数据

示例

数据通常在表中。通常,可以将此表格数据分为宽和长格式。在广泛的格式中,每个变量都有自己的列。

身高[cm]年龄[yr]
艾莉森17820
鲍勃17445
卡尔18231

但是,有时使用长格式会更方便,因为所有变量都在一列中,而值在第二列中。

变量
艾莉森身高[cm]178
鲍勃身高[cm]174
卡尔身高[cm]182
艾莉森年龄[yr]20
鲍勃年龄[yr]45
卡尔年龄[yr]31

Base R和第三方程序包可用于简化此过程。对于每个选项,mtcars将使用数据集。默认情况下,该数据集为长格式。为了使程序包正常工作,我们将把行名插入第一列。

mtcars # shows the dataset

data <- data.frame(observation=row.names(mtcars),mtcars)

基数R

base R中有两个函数可用于在宽格式和长格式之间进行转换:stack()和unstack()。

long <- stack(data)

long # this shows the long format

wide <- unstack(long)    

wide # this shows the wide format

但是,对于更高级的用例,这些功能可能会变得非常复杂。幸运的是,还有其他使用第三方软件包的选项。

提迪尔包

该软件包用于gather()从宽到长的spread()转换以及从长到宽的转换。

library(tidyr)

long <- gather(data, variable, value, 2:12) # where variable is the name of the 

# variable column, value indicates the name of the value column and 2:12 refers to

# the columns to be converted.

long # shows the long result

wide <- spread(long,variable,value)

wide # shows the wide result (~data)

该data.table包

该data.table包扩展的reshape2功能和使用功能,melt()从广角到去长,dcast()从长期去宽。

library(data.table)

long <- melt(data,'observation',2:12,'variable', 'value')

long # shows the long result

wide <- dcast(long, observation ~ variable)

wide # shows the wide result (~data)

           

以上是 R重塑数据 的全部内容, 来源链接: utcz.com/z/315840.html

回到顶部