第四章:基本数据管理
4.2 创建新变量
mydata
4.4 变量重命名
可使用names函数
names(leadership)[2]
另外,plyr中的rename函数可用来修改变量名
rename(dataframe, c(oldname="newname", oldname="newname",...))
4.5 缺失值
在进行数据处理前必须要进行的一个步骤,当然缺失值的处理还有更高级的处理方法,这里只是比较简单的几个处理方法。
4.5.1 重新编码某些缺失值
leadership$age[leadership$age == 99]
上面是一个关于年龄的例子,其中我们将年龄为99岁的编码为缺失值,因为考虑到这个年龄段的毕竟是少数,会影响样本的平均值,所以定义为缺失值更恰当一些,所以数据的处理有时候要考虑到实际情况。
4.5.2 排除缺失值
可以用 na.omit 函数
newdata
注:这里删除的是缺失行
4.6 日期值
日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。
as.Date(x, "input_format")
其中,x是字符型数据,后面是用于读入日期的格式
文章图片
---Sys.Data() 可以返回当天的日期,而 date()则返回当前的日期和时间
---函数 format(x, format="output_format") 来输出指定格式的日期值,并且
可以提取日期值中的某些部分
---函数 difftime() 来计算时间间隔
4.9 数据集合并
4.9.1 数据框添加列
使用merge函数,在多数情况下,两个数据框是通过一个或多个共有变量进行联结的
total
cbind()函数也可以进行横向合并,但是两个对象必须有相同的行数,以同顺序排序
4.9.2 数据框添加行
使用rbind函数
total
必须拥有相同的变量,顺序不必一定相同
如果 dataframeA 中拥有dataframeB 中没有的变量,请在合并它们之前做以下某种处理:
? 删除 dataframeA 中的多余变量;
? 在 dataframeB 中创建追加的变量并将其值设为 NA (缺失)。
4.10 数据集取子集
4.10.1 选入(保留)变量
直接选取所需要变量的列,默认选取所有的行
newdata
4.10.2 剔除变量
myvars
newdata
【r|r 选取从小到大的数据_R语言(基本数据、高级数据处理)】或者
newdata
在某一列的下标之前加一个减号就会剔除那一列
4.10.3 选入观测
关于日期选择的一个例子
leadership$date
startdate
enddate
newdata = https://www.it610.com/article/startdate &leadership$date <= enddate),]
4.10.4 subset()函数
选择变量和观测最简单的方法
#选择所有 age 值大于等于35或 age 值小于24的行,保留了变量 q1 到 q4
newdata = https://www.it610.com/article/35 | age < 24,select=c(q1, q2, q3, q4))
#选择所有25岁以上的男性,并保留了变量 gender到 q4 ( gender 、 q4 和其间所有列)
newdata 25,select=gender:q4)
4.10.5 随机抽样
sample()函数,能够从数据集中(有放回或无放回地)抽取大小为 n 的一个随机样本
mysample
用法:sample() 函数中的第一个参数是一个由要从中抽样的元素组成的向量。在这里,这个向量是1到数据框中观测的数量,第二个参数是要抽取的元素数量,第三个参数表示无放回抽样。
sample() 函数会返回随机抽样得到的元素,之后即可用于选择数据框中的行。
第五章:高级数据处理
一个数据处理的难题:例如在分析学生成绩单的时候,学生之间的分数差距会比较大,所以要用统计概率中的均值来分析的话没有任何意义,但是运用R语言中数据处理的方法可以解决这个问题。
5.2 数值和字符处理函数
5.2.1 数学函数
文章图片
文章图片
5.2.2 统计函数
文章图片
例子:
平均数:
z
提供了截尾平均数,即丢弃了最大5%和最小5%的数据和所有缺失值后的算术平均数
-------------------------------------数据的标准化---------------------------------------
默认情况下,函数 scale() 对矩阵或数据框的指定列进行均值为0、标准差为1的标准化:
newdata
要对每一列进行任意均值和标准差的标准化,可以使用如下的代码:
newdata
其中的 M 是想要的均值, SD 为想要的标准差。在非数值型的列上使用 scale() 函数将会错。
要对指定列而不是整个矩阵或数据框进行标准化,可以使用这样的代码:
newdata
此句将变量 myvar 标准化为均值50、标准差为10的变量。
5.2.3 概率函数
在R中,概率函数形如 :[dpqr]distribution_abbreviation()
其中第一个字母表示其所指分布的某一方面:
d = 密度函数(density)
p = 分布函数(distribution function)
q = 分位数函数(quantile function)
r = 生成随机数(随机偏差)
文章图片
------设置随机种子:set_seed()
函数:runif()用来生成0到1区间上的服从均匀分布的伪随机数
------在模拟研究和蒙特卡洛方法中,经常需要获取来自给定均值向量和协方差阵的多元正态分布的数据。 MASS 包中的 mvrnorm() 函数可以让这个问题变得很容易。其调用格式为:
mvrnorm(n, mean, sigma)
其中 n 是想要的样本大小, mean 为均值向量,而 sigma 是方差--协方差矩阵(或相关矩阵)
5.2.4 字符处理函数
数学和统计函数是用来处理数值型数据的,而字符处理函数可以从文本型数据中抽取信息,或者为打印输出和生成报告重设文本的格式
文章图片
5.2.5 其它实用函数
文章图片
-----apply函数:
apply(x, MARGIN, FUN, ...)
其中, x 为数据对象, MARGIN 是维度的下标, FUN 是由你指定的函数,而 ... 则包括了任何想传递给 FUN 的参数
在矩阵或数据框中, MARGIN=1 表示行, MARGIN=2 表示列。
注: lapply() 和 sapply() 将函数应用到列表(list)上
-----strsplit函数
name
5.4 控制流
5.4.1 重复和循环
1、for结构
for (var in seq) statement
#例子如下
for (i in 1:10) print("Hello") #Hello被输出10次
2、while结构
while (cond) statement
#例子如下
i
while (i > 0) {print("Hello");
i
5.4.2 条件执行
1、if-else结构
if (cond) statement
if (cond) statement1 else statement2
例子
if (is.character(grade)) grade
if (!is.factor(grade)) grade
is a factor")
2、ifelse结构
ifelse(cond, statement1, statement2)
若 cond 为 TRUE ,则执行第一个语句;若 cond 为 FALSE ,则执行第二个语句
3、switch结构
switch(expr, ...)
例子:
> feelings
> for (i in feelings)
print(
switch(i,
happy = "I am glad you are happy",
afraid = "There is nothing to fear",
sad = "Cheer up",
angry = "Calm down now"
)
)
[1] "Cheer up"
[1] "There is nothing to fear"
5.6 整合和重构
5.6.1 转置
t()
5.6.2 整合数据
aggregate(x, by, FUN)
5.6.3 reshape2包(功能更强大,建议用这个)
1、融合:melt()
数据集的融合是将它重构为这样一种格式:每个测量变量独占一行,行中带有要唯一确定这个测量所需的标识符变量。
2、重铸:dcast()
该函数读取已融合的数据,并使用提供的公式和一个(可选的)用于整合数据的函数将其重塑。调用格式为:
newdata
其中的 md 为已融合的数据, formula 描述了想要的最后结果,而 fun.aggregate 是(可选的)数据整合函数。
推荐阅读
- R|【R数据可视化手册】笔记1-条形图
- 数据挖掘|决策树
- R|时间序列分析记录一
- R语言(生成正态分布数据生成--rnorm,dnorm,pnorm,qnorm)
- R|不同方法的正态性检验及R语言实现
- R(增加或删除矩阵的行或列)
- matlab直接保存图形而不显示图形
- R|记一次R的可视化使用-生成城市各个景点的多边形图
- 数据挖掘|使用R完成均值检验