数据处理|数据框重铸

简介: 数据处理|数据框重铸

数据处理过程中,针对数据框,可以进行列的添加,以及长、宽数据的转化。

在实际应用中,宽型数据更具可读性,长型数据则更适合做分析。


一 reshape2包中两个主要的函数

melt—将宽型数据融合成长型数据;cast—将长型数据转成宽型数据

此处用R内置的airquality数据集,首先将列名改成小写,然后查看相应的数据

library(reshape2)
library(ggplot2)
names(airquality) <- tolower(names(airquality))
head(airquality)
  ozone solar.r wind temp month day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6


1.1 melt函数 (宽转长)

id.vars中指定相应变量;variable.name和value.name分别对variable和value列重命名
airMelt1 <- melt(airquality) 
head(airMelt1,4)
  variable value
1    ozone    41
2    ozone    36
3    ozone    12
4    ozone    18


1.1.2 将month和day共同作为ID variables(那些能够区分不同行数据的变量共同作为变量),且修改长数据中的列名


airMelt2 <- melt(airquality, id.vars = c("month", "day"),
 variable.name = "variable.name", 
 value.name = "variable.value")
head(airMelt2,4)
  month day variable.name variable.value
1     5   1         ozone             41
2     5   2         ozone             36
3     5   3         ozone             12
4     5   4         ozone             18

1.2 cast函数 (长转宽)

dcast:左边参数表示"ID variables",右边的参数表示measured variables。


1.2.1 month和day是ID variables,variable则表示measured variables。

airMelt3 <- melt(airquality, id.vars = c("month", "day"))
airDcast <- dcast(airMelt3, month + day ~ variable)
head(airDcast)
  month day ozone solar.r wind temp
1     5   1    41     190  7.4   67
2     5   2    36     118  8.0   72
3     5   3    12     149 12.6   74
4     5   4    18     313 11.5   62
5     5   5    NA      NA 14.3   56
6     5   6    28      NA 14.9   66


1.2.2 一个数据单元有一个以上的数据。比如,我们的ID variables不包含day,

dcast(airMelt3, month ~ variable)
#Aggregation function missing: defaulting to length
  month ozone solar.r wind temp
1     5    31      31   31   31
2     6    30      30   30   30
3     7    31      31   31   31
4     8    31      31   31   31
5     9    30      30   30   30


可以看到每个单元是month与climate组合的个数。所得到数据是month对应的day的记录数


1.2.3 聚合(aggregate)这些数据,比如取mean,median,sum。比如计算均值,通过na.rm = TRUE删除NA值。

dcast(aql, month ~ variable, fun.aggregate = mean, na.rm = TRUE)
  month    ozone  solar.r      wind     temp
1     5 23.61538 181.2963 11.622581 65.54839
2     6 29.44444 190.1667 10.266667 79.10000
3     7 59.11538 216.4839  8.941935 83.90323
4     8 59.96154 171.8571  8.793548 83.96774
5     9 31.44828 167.4333 10.180000 76.90000


二 $、with、within、transform等进行列的添加


head(airquality)

2.1 $符添加列

data<-head(airquality)
data1$logwind <- log(data$wind)
data1

2.2 within 必须在新添加的变量中加上花括号

data2 <- within(data,{logwind = log(wind)})
data2

2.3 with 也可以使用with函数,该函数可以用于任何表达式的计算,但每次只能生成一个计算字段,最后还需要结合使用cbind函数

data3 <- cbind(data3,with(data,log(wind)))
data3

2.4 transform函数

data4 <- transform(data,logwind = log(wind),day2 = day^2)
data4
  ozone solar.r wind temp month day  logwind day2
1    41     190  7.4   67     5   1 2.001480    1
2    36     118  8.0   72     5   2 2.079442    4
3    12     149 12.6   74     5   3 2.533697    9
4    18     313 11.5   62     5   4 2.442347   16
5    NA      NA 14.3   56     5   5 2.660260   25
6    28      NA 14.9   66     5   6 2.701361   36
相关文章
|
对象存储
阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)
阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)
885 0
|
数据库 数据安全/隐私保护 数据库管理
|
7月前
|
传感器 SQL 运维
2025 年中国中小企业数字化转型:Websoft9 开源托管平台的价值
Websoft9 以开源技术为核心,打造零门槛、低成本的数字化基座,提供 200+ 开源模板(如 Odoo、Nextcloud),助力企业快速部署与扩展。通过容器化技术、多云适配及主动防御体系,保障安全与兼容性。行业级解决方案覆盖制造、教育、法律等领域,实现数据驱动决策闭环。生态创新模式鼓励技术反哺与商业裂变,形成“标准化模板 + 自由扩展”路径,使中小企业从技术消费者转型为生态共建者,推动数字化转型成为价值创造的永动机。
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
编解码 人工智能 安全
阿里云首批卓越级通过中国信通院超低延时直播性能分级评估
近期举办的2024“可信云大会”上,中国信通院正式发布了2024年上半年音视频领域最新评估结果。阿里云超低延时直播,以首批卓越级,通过中国信通院超低延时直播性能及服务质量分级测试。
阿里云首批卓越级通过中国信通院超低延时直播性能分级评估
|
11月前
|
API
鸿蒙开发:了解显式动画animateTo
在实际的开发中,应该遵循规范,正确的使用属性动画animateTo,切莫在轮询中使用,否则就会造成本不属当前的动画进行执行,造成UI错误,还有一点需要注意,那就是直接使用animateTo可能导致实例不明确的问题,建议使用getUIContext获取UIContext实例,并使用animateTo调用绑定实例的animateTo。
342 3
鸿蒙开发:了解显式动画animateTo
|
10月前
|
云安全 人工智能 供应链
阿里云安全白皮书发布:面向未来的安全能力与实践
阿里云发布2024年安全白皮书,聚焦数智化趋势下的安全新态势、安全治理框架的八大支柱及云上安全最佳实践。白皮书强调动态更新和实战验证,涵盖云平台自身安全、数据合规、身份管控等关键领域,并介绍淘宝上云的安全转型经验。通过红蓝对抗、自动化防御等手段,确保持续提升安全能力,帮助客户应对复杂多变的网络安全挑战。
1313 6
|
前端开发 JavaScript
|
存储 Ubuntu Linux
如何安装和使用 Docker:入门指南
如何安装和使用 Docker:入门指南
453 1
|
存储 缓存 监控
托管内存(Managed Memory)
托管内存(Managed Memory)
下一篇
oss云网关配置