数据处理|数据框重铸

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

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

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


一 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
相关文章
|
5月前
|
数据采集 数据可视化 数据挖掘
多维数据分析:使用Pandas进行复杂的数据操作和聚合
【4月更文挑战第12天】Pandas是Python的强大数据分析库,提供DataFrame数据结构进行多维数据处理。本文介绍了使用Pandas进行多维数据分析的流程:1) 导入数据(如CSV、Excel);2) 数据预处理,包括缺失值处理和类型转换;3) 数据探索,利用describe()、hist()、plot()等进行统计和可视化;4) 数据操作,如筛选、排序和分组;5) 数据聚合,通过groupby()和agg()进行计算。文中还给出了电商数据分析的案例,展示Pandas在实际应用中的价值。
245 2
|
数据可视化 数据挖掘 索引
pandas数据分析之数据绘图
一图胜千言,将信息可视化(绘图)是数据分析中最重要的工作之一。它除了让人们对数据更加直观以外,还可以帮助我们找出异常值、必要的数据转换、得出有关模型的想法等等。pandas 在数据分析、数据可视化方面有着较为广泛的应用。本文将通过实例介绍pandas的数据绘图。
163 0
|
机器学习/深度学习 数据处理 Python
【机器学习5】数据处理(二)Pandas:表格处理 2
【机器学习5】数据处理(二)Pandas:表格处理
202 0
|
5月前
|
数据采集 数据挖掘 大数据
数据处理利器:使用Pandas进行数据清洗与转换
【4月更文挑战第12天】在大数据时代,Pandas是Python数据分析的关键工具,提供高效的数据清洗和转换功能。本文介绍了如何使用Pandas处理缺失值(删除或填充)、异常值(Z-Score法和IQR法)以及重复值(检测和删除)。此外,还涵盖了数据转换,包括数据类型转换、数据标准化(Min-Max和Z-Score)以及类别数据的one-hot编码。通过学习这些方法,可以为数据分析和挖掘奠定坚实基础。
145 0
|
SQL 数据挖掘 关系型数据库
pandas数据分析之分组聚合
在数据分析过程中,经常会需要根据某一列或多列把数据划分为不同的组别,然后再对其进行数据分析。本文将介绍pandas的数据分组及分组后的应用如对数据进行聚合、转换和过滤。
137 0
|
SQL 数据处理 索引
pandas数据处理之合并与拼接
在许多应用中,数据可能来自不同的渠道,在数据处理的过程中常常需要将这些数据集进行组合合并拼接,形成更加丰富的数据集。pandas提供了多种方法完全可以满足数据处理的常用需求。具体来说包括有join、merge、concat、append等。
216 0
|
机器学习/深度学习 数据挖掘 数据处理
【机器学习5】数据处理(二)Pandas:表格处理 1
【机器学习5】数据处理(二)Pandas:表格处理
74 0
|
数据挖掘 索引 Python
【Pandas数据分析3】数据提取
【Pandas数据分析3】数据提取
110 0
|
数据挖掘 索引 Python
数据分析-Pandas分组聚合
数据分析-Pandas分组聚合
91 0
数据分析-Pandas分组聚合