r语言学习数据科学与R语言

第四章 基本数据管理

2017-10-06  本文已影响132人  lxmic
微博签到,图片来自Echart

4.1 创建新变量

在你需要的分析数据中,往往要用新的变量或者对现有的变量进行变换:变量名 <- 表达式
而在表达式中,往往包含很多种的运算符和函数:

各种运算符
数据框中创建添加心变量的三种方式,其实第一种和第二种是完全一样的,第三种使用transform()函数来创建新的变量。
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
attach(mydata)
mydata$sumx <- x1 + x2
mydata$meanx <- (x1 + x2)/2
detach(mydata)
mydata <- transform(mydata,
                    sumx = x1 + x2,
                    meanx = (x1 + x2)/2)

4.2 变量的重编码

重编码数据,可以使用R中一个或多个逻辑值运算符。能够返回逻辑值

逻辑运算符 作为例子来演示

需要将其中的年龄变量重新编码,99岁的年龄值重编码为缺失值:
leadership$age[leadership$age == 99] <- NA
接着使用以下代码创建重编码之后的新变量:

# within()和with()函数类似,不同在于within()函数可以修改数据框。
变量[原始变量逻辑运算] <- 表达式
leadership <- within(leadership,{
  agecat <- NA
  agecat[age > 75] <- "Elder"
  agecat[age >= 55 & age <= 75] <- "Middle Aged"
  agecat[age < 55] <- "Young" })

4.3 变量的重命名

4.4 缺失值(NA)

4.5 日期值

日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。函数as.Data()用于执行这种转化。语法:as.Data(x, "input_format"),其中x是字符型数据,input_format则给出了用于读入日期的适当格式。

使用指定格式读取字符型变量,并将其作为一个日期变量替换到数据框中。这种转换一旦完成,就可以使用诸多方法对这些日期进行分析和绘图。

Sys.Date()date()分别是可以返回当天的日期和当前日期和时间的函数。
函数format(x, format="output_format")可以输出指定格式的日期值,并且可以提取日期中的某些部分。

today <- Sys.Date()
format(today, format="%B %d %Y")
format(today, format="%A")

R的内部在存储日期时,是使用自1970年1月1日以来的天数表示的,更早的日期为负数。所以可以在日期值上执行算术运算。

startdate <- as.Date("2004-02-13")
enddate   <- as.Date("2009-06-22")
days <- enddate - startdate

difftime()来计算时间间隔,并以星期、天、时、分、秒来表示

today <- Sys.Date()
dob <- as.Date("1956-10-12")
# units参数来指定表示方式,这里是weeks
difftime(today, dob, units="weeks")

当然,也可以将日期转换为字符型变量。函数as.character()可将日期值转换为字符型。一旦转换完成,可以用一系列字符处理函数处理数据。此外,lubridate包和timeDate包也提供了大量的日期处理函数,可以对日期进行运算。

日期格式 我敲这个代码的时间

4.6 类型转换

R中提供了一系列判断某个对象的数据类型和将其转换为另一种数据类型的函数。is.datatype()这些函数结合控制流使用时,将成为一类强大的工具,即允许根据数据的具体类型以不同的方式处理数据。

类型转换函数

4.7 数据排序

order()函数可以对一个数据框进行排序,默认的排序顺序是升序。在排序变量的前边加一个减号,即可以得到降序的结果。一般是由女性到男性。

4.8 数据集的合并

4.9 数据集取子集

# 首先生成所有变量名的字符型向量,返回一个逻辑向量,匹配q3和q4的为TRUE值,最后用!将逻辑值反转,最后选择逻辑值为TRUE的列,q3和q4被剔除。
myvars <- names(leadership) %in% c("q3", "q4") 
leadership[!myvars]
# 其他的方法也可以剔除,在某一列的下标之前加一个减号。会剔除那一列
newdata <- leadership[c(-8,-9)]
# 将q3和q4设定为未定义,也可以完成变量删除工作
leadership$q3 <- leadership$q4 <- NULL
# 选择了q1到q4中,年龄大于等于或者小于24的观测值
newdata <- subset(leadership, age >= 35 | age < 24,
                  select=c(q1, q2, q3, q4))
# 选择了gender到q4变量中,年龄大于25的男性的观测值
newdata <- subset(leadership, gender=="M" & age > 25,
                  select=gender:q4)

第四章终于完成学习,算是对我之前学习的一个复习,接下来第五章就是全新的开始了,或许会更艰难,快要涉及到统计学。

上一篇下一篇

猜你喜欢

热点阅读