R语言学习笔记——R语言数据处理基本操作

#############操纵日期和缺失值##################
#########不要说别人的事情,做好自己的事情######
#############author:clebeg 2014/04/08##########

#实验数据
leadership <- data.frame(manager = numeric(0), 
                   date = character(0),
                   country = character(0),
                   gender = character(0),
                   age = numeric(0),
                   q1 = numeric(0),
                   q2 = numeric(0),
                   q3 = numeric(0),
                   q4 = numeric(0),
                   q5 = numeric(0)
                   )
leadership <- edit(leadership)
leadership <- read.csv(file="testData/leadership.csv", row.names="X", head=TRUE)
#数据分析师大部分时间花在数据准备阶段
5%%2 #求模 
5%/%2 #整除

########基本数据操作###########
mydata <- data.frame(x1 = c(2, 2, 6, 4),
                     x2 = c(3, 4, 2, 8))

#with函数不会影响外部变量的值
with(data=mydata, expr={
  mydata$sumx <<- x1 + x2
  mydata$meanx <<- (x1 + x2)/2
})

#个人认为最好的方式用 transform() 函数,有点类似于 with 函数,该函数可以为数据创造属性,就如同with代码段一样
mydata <- transform(mydata, sumx = x1 + x2, meanx = (x1 + x2)/2)

##########重编码############
#重编码涉及根据同一个变量或其他变量的现有值创建新值的过程
#within函数与with函数类似,不同的是它允许修改数据框的值
leadership <- within(data = leadership, expr = {
  age[age == 99] <- NA
  agecat <- NA
  agecat[age > 75] <- "Elder"
  agecat[age >= 50 & age <= 75] <- "Middle Aged"
  agecat[age < 50] <- "Young"
})
#reshape 包拥有一系列强大的数据集结构修改函数, 比如:数据集属性的名字
#names() 函数来重命名变量
names(leadership)
names(leadership)[1] <- "managerId"
is.na(leadership$age)#NA(not available) NaN(not a number)

########### 缺失值的警示名言 ##################################
#缺失值被认为是不可比较的,即便是与缺失值自身的比较。
#这意味着无法使用比较运算符来检测缺失值是否存在。
#例如,逻辑测试 myvar == NA 的结果永远不会为 TRUE 。
#作为替代,你只能使用处理缺失值的函数来识别出R数据对象中的缺失值
#含有缺失值的算术表达式和函数的计算结果也是缺失值
#多数的数值函数都拥有一个 na.rm=TRUE 选项,可以自动移除缺失值
#可以通过函数 na.omit() 移除所有含有缺失值的观测的行 omit(忽略)
na.omit(leadership)


########### R语言中的日期值处理 ###############################
#日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。函数as.Date() 用于执行这种转化。
#as.POSIXlt()可以处理日期时间
help(as.Date)
as.Date(leadership$date, format = "%m/%d/%y") #format的具体格式可以查看帮助文档help(strptime)
Sys.Date()
Sys.time()
date()
as.POSIXlt(Sys.time())

#日期计算 difftime() 函数
today <- Sys.Date()
dob <- as.Date("1956-10-12")
difftime(today, dob, units = "weeks")
format(dob, format = "%A")
#两个日期处理的好包:lubridate 包, fCalendar 包


####################判断变量的具体类型##############
#is.datatype() 这样的函数可以判断对象类型
#as.datatype() 这样的函数则将其参数转换为对应的类型。


#################### 数据排序 #######################
#可以使用 order() 函数对一个数据框进行排序。默认的排序顺序是升序。
#在排序变量的前边加一个减号即可得到降序的排序结果。
#最后注意 %in% 运算符的用法 和subset() 函数

你可能感兴趣的:(R,语言学习)