不同文件类型的数据读取
csv
a <- read.csv('H:/data/dat.csv', header = T, sep=",",
na.strings = "NA", stringsAsFactors=F, encoding="UTF-8")
xlsx
a <- read.xlsx('E:/data.xls', sheetIndex = 1, header = T,
startRow = 2, colIndex = 1:21, stringsAsFactors = F, encoding="UTF-8")
处理数据对象
处理对象的函数
项目 | Value |
---|---|
length(object) | 显示对象中元素/成分的数量 |
dim(object) | 显示对象的维度 |
str(object) | 显示对象的结构 |
class(object) | 显示对象的类型 |
mode(object) | 显示对象的模式 |
names(object) | 显示对象中各成分的名称 |
c(object, object,…) | 将对象合并入一个向量 |
cbind(object, object, …) | 按列合并 |
rbind(object, object, …) | 按行合并 |
head(object) | 列出对象的开始部分(前五行) |
tail(object) | 列出某个对象的最后部分 |
ls() | 显示当前的对象列表 |
rm(object, object, …) | 删除一个或更多个对象。 |
rm(list = ls()) | 删除当前工作环境中所有对象 |
newobject <- edit(object) | 编辑对象并另存为newobject |
fix(object) | 直接编辑对象 |
数据框内变量处理
逻辑运算符
符号 | 意义 |
---|---|
< | 小于 |
<= | 小于或等于 |
\ > | 大于 |
\ >= | 大于或等于 |
== | 严格等于 |
!= | 不等于 |
!x | 非x |
x | y |
x & y | X和y |
isTRUE(x) | 测试x是否为TRUE |
数据框内变量计算
data <- transform( data,
sumx = x1 + x2,
meanx = (x1+x2) / 2 )
连续性变量分组
data$age[data$age == 99] <- NA
data <- within( data, {
g_age <- NA,
g_age[age > 75] <- “elder”
g_age[age >= 55 & age <= 75] <- “middle”
g_age[age < 55] <- “young”})
car包中的**recode()**函数可以十分简便地重编码数值型、字符型向量或因子。
datain_conserv <- within(datain_conserv,{
admission.way <- car::recode(admission.way,"'Emergency'=1;'NonEmergency'=0")
gender <- car::recode(gender,"'Male'=1;'Female'=0")
})
# 随后对admission.way进行重命名
datain_conserv <- plyr::rename(datain_conserv,
c(admission.way='admission.Emergency'))
doBy包提供了另外一个很受欢迎的函数recodevar()。
R中自带了cut(),可将一个数值型变量按值域切割为多个区间,并返回一个因子。
datain_imp <- within(datain_imp,{
g_TT <- cut(thrombin.time, breaks = c(0, 14, 21, Inf), include.lowest = F)
g_PT <- cut(prothrombin.activity, breaks = c(0, 70, 120), include.lowest = F)
})
变量重命名
names(leadership)[2] <- 'testDate'
plyr包中有一个rename()函数,用于修改变量名。
data <- plyr::rename( data, c(admission.way='admission.Emergency'))