小白学R笔记(四):R语言实战(第二版)

第四章 基本数据管理

4.2 创建新变量

变量名<-表达式
在这里插入图片描述
在数据框中创建新变量:
eg.在mydata数据框中创建sumx列,值为x1列和x2列相应元素的和
1、

mydata<-data.frame(x1 = c(2,2,2,4), x2 = c(3,4,2,8))
mydata$sumx<-mydata$x1 + mydata$x2

2、

attach(mydata)
mydata$sumx<-x1+x2

3、使用transform()函数

mydata<-transform(mydata,sum=x1+x2)
4.3 变量的重编码

在这里插入图片描述
eg. 将99岁年龄值重编码为缺失值

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

eg. 将大于75岁年龄值设为“Elder”存入新变量agecat中

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

eg. 使用within()函数综合上面两条代码

leadership<-within(leadership,{
                   agecat<-NA
                   agecat[age>75]<-"Elder"})
4.4 变量的重命名

1、fix(mydata)
调用一个交互式编辑器修改变量名
2、names(mydata)[2]<-“testDate”
使用names()函数重命名变量
3、rename(mydata,c(oldname=“newname”,oldname=“newname”,…))
使用plyr包中rename()函数修改变量名

4.5 缺失值

p.s. R中字符型和数值型数据使用的缺失值符号都是NA
函数is.na()检测缺失值是否存在
p.s. 正无穷Inf 负无穷-Inf 不可能的值NaN
缺失值处理:
1、在数值函数中使用na.rm=TRUE选项,可以在计算之前移除缺失值,用剩余值计算

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

2、使用na.omit()函数移除所有含有缺失值的观测

4.6 日期值

将以字符串形式输入到R中的日期值,转化为以数值形式储存的日期变量。
as.Date(x,“input_format”)
p.s. as.Date的默认格式是yyyy-mm-dd
在这里插入图片描述
as.character()可以将日期值转化为字符型

4.7 类型转换

在这里插入图片描述

4.8 数据排序

order()函数可以对一个数据框进行排序,默认是升序,在变量前加负号可以降序。

attach(leadership) 
newdata <-leadership[order(gender, -age),] 
detach(leadership)
4.9 数据集的合并

1、merge()函数进行横向联结

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

2、cbind()函数“直接”进行横向合并,为了正常工作必须有相同行数

total<-cbind(A,B)

3、rbind()函数纵向联结

4.10 数据集取子集

1、选择变量
1)

newdata <- leadership[, c(6:10)]

2)

myvars <- c("q1", "q2", "q3", "q4", "q5") 
newdata <-leadership[myvars]

3)使用paste()函数创建与2)中相同的字符型变量

myvars <- paste("q", 1:5, sep="") 
newdata <- leadership[myvars]

2、剔除变量
1)

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

(1) names(leadership) 生成了一个包含所有变量名的字符型向量: c(“managerID”,“testDate”,“country”,“gender”,“age”,“q1”, “q2”,“q3”,“q4”,“q5”)。
(2) names(leadership) %in% c(“q3”, “q4”) 返回了一个逻辑型向量, names(leadership)中每个匹配q3或q4的元素的值为TRUE,反之为FALSE:c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE)。
(3) 运算符非(!)将逻辑值反转:c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE)。
(4) leadership[c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE)]选择了逻辑值为TRUE的列,于是q3和q4被剔除了。
2)如果知道要剔除的变量的列数

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

3)

leadership$q3 <- leadership$q4 <- NULL

3、选入观测

newdata <- leadership[leadership$gender=="M" & leadership$age > 30,]
newdata <- leadership[which(leadership$date >= startdate & leadership$date <= enddate),]

4、subset()函数
在这里插入图片描述
5、随机抽样
sample()函数可以从数据集中抽取大小为n的一个随机样本
eg. 从leadership数据集中随机抽取一个大小为3的样本

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

p.s. 第一个参数是一个由要从中抽样的元素组成的向量
第二个参数是要抽取的元素数量
第三个参数表示无放回抽样

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值