R重塑数据
示例
数据通常在表中。通常,可以将此表格数据分为宽和长格式。在广泛的格式中,每个变量都有自己的列。
人 | 身高[cm] | 年龄[yr] |
---|---|---|
艾莉森 | 178 | 20 |
鲍勃 | 174 | 45 |
卡尔 | 182 | 31 |
但是,有时使用长格式会更方便,因为所有变量都在一列中,而值在第二列中。
人 | 变量 | 值 |
---|---|---|
艾莉森 | 身高[cm] | 178 |
鲍勃 | 身高[cm] | 174 |
卡尔 | 身高[cm] | 182 |
艾莉森 | 年龄[yr] | 20 |
鲍勃 | 年龄[yr] | 45 |
卡尔 | 年龄[yr] | 31 |
Base R和第三方程序包可用于简化此过程。对于每个选项,mtcars将使用数据集。默认情况下,该数据集为长格式。为了使程序包正常工作,我们将把行名插入第一列。
mtcars # shows the datasetdata <- 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