数据汇总
- summary
对一个数据框 d,用 summary(d) 可以获得每个连续型变量的基本统计量,和每个离散取值变量的频率。以及分类变量的各种类型的统计结果。如:
> summary(CO2)Plant Type Treatment concQn1 : 7 Quebec :42 nonchilled:42 Min. : 95Qn2 : 7 Mississippi:42 chilled :42 1st Qu.: 175Qn3 : 7 Median : 350Qc1 : 7 Mean : 435Qc3 : 7 3rd Qu.: 675Qc2 : 7 Max. :1000(Other):42uptakeMin. : 7.701st Qu.:17.90Median :28.30Mean :27.213rd Qu.:37.12Max. :45.50
- str
对数据框 d,用 str(d) 可以获得各个变量的类型和取值样例。如:
> str(CO2)Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame': 84 obs. of 5 variables:$ Plant : Ord.factor w/ 12 levels "Qn1"<"Qn2"<"Qn3"<..: 1 1 1 1 1 1 1 2 2 2 ...$ Type : Factor w/ 2 levels "Quebec","Mississippi": 1 1 1 1 1 1 1 1 1 1 ...$ Treatment: Factor w/ 2 levels "nonchilled","chilled": 1 1 1 1 1 1 1 1 1 1 ...$ conc : num 95 175 250 350 500 675 1000 95 175 250 ...$ uptake : num 16 30.4 34.8 37.2 35.3 39.2 39.7 13.6 27.3 37.1 ...- attr(*, "formula")=Class 'formula' language uptake ~ conc | Plant.. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>- attr(*, "outer")=Class 'formula' language ~Treatment * Type.. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>- attr(*, "labels")=List of 2..$ x: chr "Ambient carbon dioxide concentration"..$ y: chr "CO2 uptake rate"- attr(*, "units")=List of 2..$ x: chr "(uL/L)"..$ y: chr "(umol/m^2 s)"
还有一个pillar::glimpse 函数,更简洁:
> glimpse(CO2)Rows: 84Columns: 5$ Plant <ord> Qn1, Qn1, Qn1, Qn1, Qn1, Qn1, Qn1, Qn2, Qn2, Qn2, Qn…$ Type <fct> Quebec, Quebec, Quebec, Quebec, Quebec, Quebec, Queb…$ Treatment <fct> nonchilled, nonchilled, nonchilled, nonchilled, nonc…$ conc <dbl> 95, 175, 250, 350, 500, 675, 1000, 95, 175, 250, 350…$ uptake <dbl> 16.0, 30.4, 34.8, 37.2, 35.3, 39.2, 39.7, 13.6, 27.3…
- head, tail
看数据框前后几行。
概括函数
连续性变量:对连续取值的变量 x,可以用 mean, std, var, sum, prod, min, max 等函数获取基本统计量。加 na.rm=TRUE 选 项可以仅对非缺失值计算。sort(x) 返回排序后的结果。rev(x) 把 x 所有元素次序颠倒后返回。quantile(x, c(0.05, 0.95)) 可以求 x 的样本分位数。rank(x) 对 x 求秩得分(即名次,但从最小到最大排列)。
分类变量:table 统计频数。prop.table() 将频数转为百分比。
table 还可以接受两个参数,实现列联表:

对于 table() 的结果列联表,可以用 addmargins() 函数增加行和与列和:

数据框概括
用 colMeans() 对数据框或矩阵的每列计算均值,用 colSums() 对数据框或矩阵的每列计算总和。用 rowMeans() 和 rowSums() 对矩阵的每行计算均值或总和。
分类概括
- tapply
分组概括:
tapply(X, INDEX, FUN)## F M## 113.2354 108.1214with(d.cancer,tapply(v0, sex, mean))
- aggregate
可以指定某一列或几列(用list 传递)分组,对指定数据框进行统计计算:
aggregate(d.cancer[, c("age", "v0", "v1")], list(sex=d.cancer[["sex"]]), mean, na.rm=TRUE)##sex age v0 v1 ## 1 F 66.14286 113.2354 42.65538 ## 2 M 63.25000 108.1214 45.95524
aggregate() 第一个参数是数据框,第二个参数是列表,列表元素是用来分组或交叉分组的变量,第三个参数是概 括用的函数,概括用的函数的选项可以在后面给出。
- split
split 函数可以把数据框的各行按照一个或几个分组变量分为子集的列表,然后可以用 sapply() 或 vapply() 对每组进行概括。如:
sp <- split(d.cancer[,c("v0","v1")], d.cancer[["sex"]]) sapply(sp, colMeans)
