《R语言实战》学习记录:基本数据管理

本文记录了《R语言实战》第四章的学习内容,主要包括如何添加变量、更改变量名称、处理缺失值、处理日期、排序、合并数据以及选取子集等基本数据管理操作。通过示例详细介绍了R中的transform函数、recode函数、rename函数、na.omit函数、as.Date函数、merge函数等在数据处理中的应用。
摘要由CSDN通过智能技术生成

时间:2018-08-14(学习) 2018-08-16(记录)
教程:《R语言实战》
学习内容:第四章


R语言实战

第四章:基本数据管理
1. 添加变量

生成数据框后可以为数据框添加新的变量。
eg:
方法一:
直接为原有数据框添加新变量:

> mydata1 <- data.frame(x1 = c(2, 2, 6, 4), x2 = c(3, 4, 2, 8))
> mydata1$sumx <- mydata1$x1 + mydata1$x2
> mydata1$meanx <- (mydata1$x1 + mydata1$x2)/2

方法二
使用transform函数为数据框添加新变量:
格式:transform(原数据, 新变量1名称 = 公式, 新变量2名称 = 公式, …)

> mydata2 <- data.frame(x1 = c(2, 2, 6, 4), x2 = c(3, 4, 2, 8))
> mydata2 <- transform(mydata2, sumx = x1 + x2, meanx = (x1 + x2)/2)
> all(mydata1 ==  mydata2)
[1] TRUE

生成本章节所使用的数据:

> 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)   # age中缺失值用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)
> rm("manager", "date", "country", "gender", "age", "q1", "q2", "q3", "q4", "q5")

R中可以根据原有变量的现存值创建新的变量。
如:
对数据框leadership添加新的变量agecat,按年龄对其进行赋值,75以上为老年,55-75为中年,55以下为青年。由于该数据框中年龄的缺失值用99表示,因此在添加新变量agecat前应当将99改为缺失值,以免出现错误。

variable[condition] <- expression :仅在 condition 的值为”TRUE”时执行赋值。
方法一:

> leadership$age[leadership$age == 99] <- NA
> leadership$agecat[leadership$age > 75] <- "Elder"
> leadership$agecat[leadership$age >= 55 & 
+                   leadership$age <= 75] <- "Middle Aged"
> leadership$agecat[leadership$age < 55] <- "Young"

方法二:

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

within函数with函数的区别在于:within函数允许修改数据框,为其添加新变量,而with函数不允许。)

结果:

> leadership
  manager     date country gender age q1 q2 q3 q4 q5 agecat
1       1 10/24/08      US      M  32  5  4  5  5  5  Young
2       2 10/28/08      US      F  45  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值