R学习之第五步

      在前面学习了创建数据集,导入数据,将数据表示为矩阵或者数据框,但这只是数据准备的第一步,获得的数据多多少少都会有一些小问题,比如有缺省值,需要重新编码,重命名或者转换数据类型等等,这节课就会学习这些基本的数据管理。

     为方面研究,先创建一个名为leadership的数据框

manager <- c(1, 2, 3, 4, 5) 
date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09") 
country <- 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, date, country, gender, age, q1, q2, q3, q4, q5, stringsAsFactors=FALSE)
leadership

    上述代码展现出如下列表:

   

1.创建新变量

  现有一个名为mydata的数据框,有x1和x2,想要创建一个新的变量存储x1和x2的值,并将其保存到数据框中。

 mydata <- data.frame(x1=c(2,3,4,5),x2=c(2,5,7,9))
 mydata

 mydata$sumx <- mydata$x1+mydata$x2
 mydata

 

 2.变量重新编码

将leadership数据框中的99岁的年龄值重编码为缺失值,使用 的代码为:leadership$age[leadership$age == 99] <- NA

接下来可以对不同年龄段的人做“老年人”,“中年人”,“青年人”的区分,其代码为:

leadership$age[leadership$age > 75]<-"老年人"
leadership$age[leadership$age > 55 & leadership$age <=75]<-"中年人"
leadership$age[leadership$age < 55 ]<-"青年人"
leadership

效果如下:

3.修改变量名

如果变量的某个列名觉得不合适,要进行修改,可以采用fix(leadership),出现以下列表,单击表头变量名即可修改

还有一种方法是:使用names(leadership),查出数据框列名,使用names(leadership)[6] <- "question1"改掉第六个“q1”的名字

4.缺省值

在任何规模的项目中,数据都可能由于未作答问题、设备故障或误编码数据的缘故而不完整。 在R中,缺失值以符号NA表示。R提供了一些函数,用于识别包含缺失值的观测。函数is.na()可以检测缺失值是否存在。只能用is.na()判断是否为缺省值。缺省值和任何值相加都是缺省值。使用na.omit()可以删除缺省值,但会把一行都给删掉,所以一般不建议使用

5.日期值

 可以将日期变量转换为字符型变量,函数as.character()可将日期值转换为字 符型:strDates <- as.character(dates)

Sys.Date()反应的是当前系统的日期,date()反应的是当前的年月日时分秒

6.数据排序

     有些情况下,查看排序后的数据集可以获得相当多的信息。可以使用order()函数对一个数据框进行排序。默认的排序顺序是升序。在排序变量的 前边加一个减号即可得到降序的排序结果。

如将leadership数据框中的年龄按照升序排序  data <- leadership[order(leadership$age)]

7.数据集的合并

 横向合并两个矩阵或数据框,使用cbind()函数:total <- cbind(A, B) ;

 横向合并两个数据框(数据集),使用merge()函数:total <- merge(dataframeA, dataframeB, by="ID") merge()的作用是:两个数据框是通 过一个或多个共有变量进行内联结;

  纵向合并两个数据框(数据集),请使用rbind()函数:total <- rbind(dataframeA, dataframeB) ,两个数据框必须拥有相同的变量,不过它们的顺序不必一定相同。

8.数据集取子集

 如从leadership数据框中获取q1,q2,q3,q4,q5放在另一个数据集中,采用q<-leadership[,6:10]

还可以将其中的某一部分去除,如x<- leadership[,-2],就将第二列去掉了

将年龄大于35或者小于24岁的q1,q2,q3,q4选出来newdata <- subset(leadership,age>=35 | age<24,select = c(q1,q2,q3,q4))

9.随机取样

  可以使用以下语句从leadership数据集中随机抽取一个大小为3的样本:mysample <- leadership[sample(1:nrow(leadership), 3, replace=FALSE),] ,sample()函数中的第一个参数是一个由要从中抽样的元素组成的向量。在这里,这个向量 是1到数据框中观测的数量,第二个参数是要抽取的元素数量,第三个参数表示无放回抽样。

即表示在5行的leadership数据框中随机取3行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值