R语言基本数据管理学习

“数据是一件麻烦事——一件非常非常麻烦的事。
《星际迷航》


本章内容
1.操纵日期和缺失值
2.熟悉数据类型的转换
3.变量的创建和重编码
4.数据集的排序,合并与取子集
5.选入和丢弃变量

1.创建新变量

x%%y 为求余;x%/%y整数除法。5%/%2的结果为2。利用$符号,也可以为为数据框添加新的一列,eg:mydata$sumx

2.变量的重编码

将一个连续型变量修改为一组类别值
将误编码的值替换为正确值
基于一组分数线创建一个表示及格/不及格的变量

要重编码数据,可以使用R中的一个或多个逻辑运算符


逻辑运算符

语句variable[condition] <- expression将仅在condition的值为TRUE时执行赋值

leadership$agecat[leadership$age>75]<-"Elder"

3.变量的重命名

fix(leadership)来调用交互式的编辑器。reshape包中有一个rename()函数,可用于修改变量名rename()函数的
使用格式为:

rename(dataframe,c(oldname="newname",oldname="newname"....)

最后,可以通过names()函数来重命名变量。

names(leadership)[2]<-"testDate"
names(leadership)[6:10]<-c("item1","item2","item3","item4","item5")

4.缺失值

在R中,缺失值以符号NA(Not Available,不可用)表示。函数is.na()允许检测缺失值是否存在。

4.1在分析中排除缺失值

好在多数的数值函数都拥有一个na.rm=TRUE选项,可以在计算之前移除缺失值并使用剩余值进行计算。

x<-c(1,2,NA,3)
y<-sum(x,na.rm=TRUE)
y=6

你可以通过函数na.omit()移除所有含有缺失值的观测。

4.2日期值

日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。函数as.Date()用于执行这种转化。as.date(x,input_format),其中x是字符型数据,input_format则给出了用于读入日期的适当格式。
有两个函数对于处理时间戳数据特别实用。Sys.Date()可以返回当天的日期,而date()
则返回当前的日期和时间。
format(x, format="output_format")来输出指定格式的日期值
可以使用函数difftime()来计算时间间隔,哈哈;例如计算结婚纪念日呀啥的~~~~~

today<-Sys.Date()
myday<-as.Date("1993-05-27")
difftime(today,myday,units="week")

将日期变量转换为字符变量strDates<-as.character(dates)

4.3类型转换

R中提供了一系列用来判断某个对象的数据类型和将其转换为另一种数据类型的函数。

表型转换函数

名为is.datatype()这样的函数返回TRUE或FALSE,而as.datatype()这样的函数则将其
参数转换为对应的类型。

4.4数据排序

使用order()函数对数据框进行排序。默认的排序顺序是升序。在排序变量的前边加一个减号即可得到降序的排序结果。

4.5数据集的合并
4.5.1添加列

两个数据框是通过一个或多个共有变量进行联结。
要横向合并两个数据框(数据集),使用merge()函数。dataframeA和dataframeB按照ID进行了合并。

total<-merge(dataframeA,dataframeB,by="ID")

如果要直接横向合并两个矩阵或数据框,并且不需要指定一个公共索引,那么可以直接
使用cbind()函数:

total<-cbind(A,B)
4.5.2添加行

要纵向合并两个数据框,使用rbind()函数:

total<-rbind(dataframeA,dataframeB)

两个数据框必须拥有相同的变量,如果dataframeA中拥有dataframeB中没有的变量,请在合并它们之前做以下某种处理:

1.删除dataframeA中的多余变量;
2.在dataframeB中创建追加的变量并将其值设为NA(缺失)。

4.6数据集取子集

4.6.1选入(保留)变量

数据框中的元素是通过dataframe[rowindices, column indices]这样的记号来访问的。

newdata<-leadership[,c(6:8)]
myvars<-c("q1","q2")
newdata<-leadership[myvars]
#上述实现了等价的变量选择。这里,(引号中的)变量名充当了列的下标,因此选择的列是相同的。
myvars<-paste("q",1:2,sep="")
newdata<-leadership[myvars]
#本例使用paste()函数创建了与上例中相同的字符型向量
4.6.2剔除(丢弃)变量

如果某个变量中有若干缺失值,你可能就想在进一步分析之前将其丢弃。下面是一些剔除变量的方法。

#剔除变量q3和q4
myvars<-names(leadership)%in%c("q3","q4")
newdata<-leadership[!myvars]

在知道q3和q4是第8个和第9个变量的情况下,可以使用语句:

newdata<-leadership[c(-8,-9)]
#这种方式的工作原理是,在某一列的下标之前加一个减号()就会剔除那
一列。

相同的变量删除工作亦可通过:

leadership$q3<-leadership$q4<-NULL
#将q3和q4两列设为了未定义(NULL)。注意,NULL与NA(表示缺失)是不同的。

上述主要是通过一个!的方式,以及增加减号-,和赋值为NULL来剔除某列。

4.6.3选入观测

选入或剔除观测(行)通常是成功的数据准备和数据分析的一个关键方面。

#选择了所有30岁以上的男性
newdata<-leadership[1:3,]
newdata<-leadership[which(leadership$gender=="M" & leadership$age>30),]

上述主要是掌握which函数

4.6.4subset()函数

使用subset函数大概是选择变量和观测最简单的方法了。

newdata<-subset(leadership,age>=35 | age < 24,select=c(q1,q2,q3,q4))
#`|`表示或
newdata<- subset(leadership,gender=="M" & age > 25,select=gender:q4) 
#你选择了所有25岁以上的男性,并保留了变量gender到q4(gender、q4和其间所有列)
4.6.5随机抽样

在数据挖掘和机器学习领域,从更大的数据集中抽样是很常见的做法。举例来说,你可能希望选择两份随机样本,使用其中一份样本构建预测模型,使用另一份样本验证模型的有效性。sample()函数能够让你从数据集中(有放回或无放回地)抽取大小为n的一个随机样本。

sampleleadership<-leadership[sample(1:nrow(leadership),3,replace = FALSE)]

sample()函数中的第一个参数是一个由要从中抽样的元素组成的向量。在这里,这个向量
是1到数据框中观测的数量,第二个参数是要抽取的元素数量,第三个参数表示无放回抽样。
sample()函数会返回随机抽样得到的元素,之后即可用于选择数据框中的行。

4.11小结

  • R存储缺失值和日期值的方式
  • 确定一个对象的数据类型,以及如何将它转换为其他类型
  • 使用简单的公式创建了新变量并重编码了现有变量
  • 如何对数据进行排序和对变量进
    行重命名,学习了如何对数据和其他数据集进行横向合并(添加变量)和纵向合并(添加观测
  • 如何保留或丢弃变量,以及如何基于一系列的准则选取观测

你可能感兴趣的:(R语言基本数据管理学习)