【R语言实战】Ch4基本数据管理

本文详细介绍了R语言中的基本数据管理操作,包括创建新变量、变量重编码、缺失值处理、日期值转换以及数据集的合并和取子集等。通过实例展示了如何使用R进行数据处理,如将特定值重编码为缺失值、如何排除分析中的缺失值、对日期进行算术运算以及如何使用merge和rbind函数进行数据合并。
摘要由CSDN通过智能技术生成

新的一年2022,加油~
开始学习《R语言实战》ch4基本数据管理有关内容
以下是学习笔记

4.1一个示例

#4-1创建leadership数据框
manager <- c(1, 2, 3, 4, 5)
date <- c("10/24/08", "10/28/08", "10/01/08", "10/12/08", "05/01/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)  
#创建数据框,并且不将字符转换为因子
#因为if列里的值是字符串的,R都会自动将该列转换为因子类型。但有的时候我们并不需要因子类型,所以不用转换
leadership

结果示意:
创建leadership数据框

学习:
1、关于因子
如果列里的值是字符串的,R都会自动将该列转换为因子类型。但有的时候我们并不需要因子类型,所以不用转换。所以在实际操作的时候,要根据需求来判断是否需要因子类型的变量。

4.2创建新变量

##4-2三种方式在已有数据框中创建新变量

#法1:每个变量都用mydata$,比较麻烦
mydata <- data.frame(x1 = c(2, 2, 6, 4),
                     x2 = c(3, 4, 2, 8))

mydata$sumx <- mydata$x1 + mydata$x2
mydata$meanx <- (mydata$x1 + mydata$x2)/2
mydata


#法2:利用attach和detach,这样后面的变量就不用$,但是前面的新变量还是需要mydata $
attach(mydata)
mydata$sumx <- x1 + x2
mydata$meanx <- (x1 + x2)/2
detach(mydata)
mydata


#法3:利用transform()函数,不用再$啦,比较方便
mydata <- transform(mydata,
                    sumx = x1 + x2,
                    meanx = (x1 + x2)/2)
mydata

结果示意:
以上三种方法的结果都一样,都是在mydata数据框中添加了sumx和meanx
添加前:
原数据框
添加后:
添加新变量后的数据框

学习:
建议用法3,transform()函数来为原数据框添加新列,这样就不用 $ 来 $ 去,比较方便。
用法:
transform(data.frame数据框名, 新列名1=(对原变量的一顿操作), 新列名2=(想添加的任意变量,但要注意行数需和原数据框相同),…)

4.3变量的重编码

重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程。

示例:将leadership中的年龄变量age重编码为类别型变量agecat(Young, Middle Aged, Elder)

第一步!!一定要先处理异常值
将年龄值为99岁重编码为缺失值

#将leadership里的age年龄值为99重编码为缺失值
leadership$age[leadership$age == 99] <- NA
leadership

结果示意:
请添加图片描述
学习:
语法variable[condition] <- expression ,仅在condition值为TRUE时执行赋值

第二步:创建agecat变量

#法1:一个个写
leadership$agecat[leadership$age > 75] <- "Elder"
leadership$agecat[leadership$age >= 55 & leadership$age <= 75] <-"Middle Aged"
leadership$agecat[leadership$age < 55] <- "Young"
leadership

#法2:利用within()函数
leadership <- within(leadership,{
   
  agecat <- NA
  agecat[age > 75
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值