第二期 基本数据管理

一、创建新变量

1.1运算符

+

-
*
/
^或**求幂
x%%y

求余(x mod y)。

例:5%%2的结果为1

x%/%y整数除法。
例:5%/%2的结果为2

1.2创建新变量

方法一

#创建名为mydata的数据框
mydata<-data.frame(x1=c(2,2,6,4),
                   x2=c(3,4,5,6))
#将x1和x2进行求和与求平均
mydata$sum<-mydata$x1+mydata$x2
mydata$mean<-(mydata$x1+mydata$x2)/2

方法二

#载入数据框
attach(mydata)
#进行求和、求平均
mydata$sum<-x1+x2
mydata$mean<-(x1+x2)/2
#关闭数据框
detach(mydata)

方法三(使用transform函数)

mydata<-transform(mydata,
                  sumx=x1+x2
                  meanx=(x1+x2)/2)

二、变量的重编码

适用范围

  • 修改变量
  • 替换变量

......

2.1逻辑运算符介绍

<小于
<=小于或等于
>大于
>=大于或等于
==严格等于*
!=不等于
x|yx或y
x&yx和y
!x非x
isTRUE(x)测试x是否为TRUE

2.2设置缺失值

以名为leadership的数据框为例

#创建名为leadership的数据框
manager<-c(1,2,3,4,5)
data<-c("10/24/08","1-/28/08","1-/1/08","10/12/08","5/1/09")
contry<-c("US","US","UK","UK","UK")
gender<-c("M","F","F","M","F")
age<-c(32,45,25,39,99)
q1<-c(5,3,3,3,2)
q2<-c(4,5,5,3,2)
q3<-c(5,2,5,4,1)
q4<-c(5,5,5,NA,2)
q5<-c(5,5,2,NA,1)
leadership<-data.frame(manager,data,contry,gender,age,
                       q1,q2,q3,q4,q5,stringsAsFactors=FALSE)

设置缺失值

leadership$age[leadership$age==99]<-NA

2.3将连续变量修改为一组类别值

如将75岁以上的人群设置为“Elder”

leadership$agecat[leadership>75]<-"Elder"
leadership$agecat[leadership$age>=55&leadership$age<=75]<-"Milddle Aged"
leadership$agecat[leadership$age<55]<-"Young"

2.4使用within()函数

使用within()函数简化代码(同时设置缺失值,修改连续变量为一组类别值)

leadership<-within(leadership,{
                    agecat<-NA
                    agecat[age>75]<-"Elder"
                    agecat[age<=55&age<=75<-"Middle Aged"
                    agecat[age<55<-"Young")}

within()函数与with()函数类似,但前者可修改数据框

三、变量的重命名

3.1使用fix()函数调用编辑器修改

使用该函数可调用编辑器,单机变量名即可重命名

3.2使用rename()函数修改

#安装reshape包
install.packages("reshape")
library(reshape)

#重命名
#格式为rename(dataframe,c(oldname="newname",oldname="newname",..))
leadership<-rename(leadership,
                   c(manager="manager ID",date="testDate")
)

3.3使用names()函数重命名变量

#查看变量名
names(leadership)
#修改变量名
names(leadership)[2]<-"testDate"
#批量修改变量名
names(leadership)[6:10]<-c("item1","item2","item3","item4","item5")

四、缺失值

4.1识别缺失值is.na()函数

如果某个元素是缺失值,相应的位置将别改写为TRUE,否则为FALSE

4.2设置缺失值

详见2.2

4.3排除缺失值

计算时若不排除缺失值,则计算结果也会变为缺失值。意即含有缺失值的算术表达式和函数的计算结果也是缺失值。

使用na.rm=TRUE排除计算时的缺失值

tips:在使用函数处理不完整的数据时,可使用help(sum)检查这些函数如何处理缺失数据

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

使用na.omit()删除不完整的观测

五、日期值

5.1以数值形式读取字符串日期值

日期值常以字符串的形式输入,然后转化为以数值形式储存的日期变量。

用as.Date()函数可完成该转化

as.Date()相当于告诉R,“鸽们,这是一个日期!看好了!不是字符~”

as.Date(x,"input_format")
#日期值的默认输入格式为yyyy-mm-dd
mydates<-as.Date(c("2007-06-22","2004-05-25"))

#其他类型的字符型数据
strdates<-c("01/05/1965")
dates<-as.Date(strdates,"%m/%d/%Y")
符号含义示例

%d

数字表示的日期(0-31)01-31
%a缩写的星期名Mon
%A非缩写的星期名Monday
%m月份(00-12)00-12
%b缩写的月份Jan
%B非缩写的月份January
%y两位数的年份

07

%Y四位数的年份2007

注:R中日期的变量类型是double!!!

意义:可以使用诸多分析方法对这些日期进行分析和绘图

5.2 Sys.Date()函数与date()

Sys.Date()可以返回当天的日期,而date()则返回当前的日期和时间。

5.2使用format()函数输出指定格式的日期值

5.3执行日期值的加减

直接加减!有手就行,见图。

5.4将日期转换为字符型变量

使用as.character()函数

strDates<-as.character(dates)

意义:可使用一系列字符处理函数处理数据(如屈子集,替换,连接等)

六、类型转换

判断转换备注
is.numericas.numeric数值型
is.characteras.character字符型
is.vectoras.vector向量
is.matrixas.matrix矩阵
is.data.frameas.data.frame数据框
is.factoras.factor因子
is.logicalas.logical逻辑

七、数据排序

使用order()函数进行排序,默认排序顺序是升序。

#创建一个新的数据集,其中各行按年龄升序排序
attach(leadership)
newdata<-leadership[order(gender,age),]
detach(leadership)
#leadership数据集见前文

加负号则降序排序。

attach(leadership)
newdata<-leadership[order(gender,-age),]
detach(leadership)

八、数据集的合并

8.1按列合并

即横向合并两个数据框(数据集),使用merge()函数。

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

或者使用cbind()函数直接合并。但合并的每个对象必须拥有相同的行数,且按相同顺序排序。

total<-cbind(A,B)

8.2按行合并

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

total<-rbind(dataframeA,dataframeB)

九、数据集取子集

9.1选入变量

方法一

方法二:等价的变量选择:

方法三:使用paste()函数

9.2剔除变量

例:剔除leadership数据里的q3,q4列。

myvars<-names(leadership)%in%c("q3","q4")
mydata<-leadership[!myvars]

代码释义:

如果要剔除某整列。且知道该列变量序号,可使用如下语句:

newdata<-leadership[c(-8,-9)]

再或者

leadership$q3<-leadership$q4<-NULL

9.3选入观测

举例

限定观测日期

9.4使用subset()函数选择并观测变量

该法较为简单

newdata<-subset(leadership,age>=35|age<24,
                select=c(q1,q2,q3,q4))
newdata<-subset(leadershi,gender=="M&age>25,
                select=gender:q4)

9.5随机抽样

参考书籍:《R语言实战》卡巴科弗

关于R语言的基本数据管理介绍到这里就结束了,希望对大家有所帮助~

此行山高路远,我们下期再见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值