R入门——数据框

**

数据框

**

1.许多数据集是以数据框的形式出现。
2.一个数据框就是将许多向量组合起来的一个对象,它是二维的,通常其列表示变量, 其行表示观测, 显示数据框时左侧会显示观测值的序号。

建立数据框的函数

若数据本身保存在一个文件中, 则通过读取该文件建立数据框
read.table() 可以读取txt文件
R无法读取excel直接保存文件,应该文件——导出——csv格式保存
read.csv() 先将数据另存为带逗号的数据(Comma Seperated values)
read.delim() 先将数据另存为用tab作为分界符的数据
注:若数据集很大(如1,000,000观测x200变量),则可由ODBC联接由数据库读入.

导入外部数据示例
建立如下数据,保存在 C:\Users\我\Desktop\example.csv 中
(RGui可读取有中文的文件)
R入门——数据框
!!需使用 / 注意!!
header=T,导入数据第一行标题

data=read.csv(“C:/Users/我/Desktop/example.csv”,header=T)
data
y x
1 3 13
2 5 24
3 2 6
4 7 21
5 9 26

更快捷的打开方式! file.choose()

data=read.csv(file.choose())
data
y x
1 3 13
2 5 24
3 2 6
4 7 21
5 9 26

R中生成数据框
若自己在R中建立了一些向量并试图由它们生成数据框, 则可以使用data.frame()

x=c(13,24,6,21,26)
y=1:5
z = data.frame(INDEX=y, VALUE=x)
z
INDEX VALUE
1 1 13
2 2 24
3 3 6
4 4 21
5 5 26

注1: INDEX和VALUE是重新命名的向量名字
注2: 数据框中向量必须有相同的长度或长度有倍数关系

weight =c(70.6, 56.4, 80, 59.5)
s =c(“adult”, “teen”)
dat =data.frame(weight, age=s)
dat
weight age
1 70.6 adult
2 56.4 teen
3 80.0 adult
4 59.5 teen

适用于数据框的函数

以数据集Puromycin为例来说明
[先导入R自带(built-in)的数据集:Puromycin ]
R入门——数据框
help(Puromycin) #显示该数据集的详细信息
head(Puromycin) #显示该数据集的前几行
summary(Puromycin) #显示主要的描述性统计量
pairs(Puromycin, panel=panel.smooth)
#通过成对数据散点图显示变量之间的关系
R入门——数据框
xtabs(~state + conc, data=Puromycin)
#由交叉分类因子产生一个列联表, 显示交叉变量的频数

R入门——数据框

数据框的下标与子集的提取:同矩阵

Puromycin[1, 1] #第一行第一个
[1] 0.02
Puromycin[c(1, 3, 5), c(1, 3)] #第1,3,5行第1,3列
conc state
1 0.02 treated
3 0.06 treated
5 0.11 treated

Puromycin[c(1, 3, 5), c(“conc”, “state”)]#“conc”, "state"列的第1,3,5行
conc state
1 0.02 treated
3 0.06 treated
5 0.11 treated
Puromycin[c(1, 3, 5), ] # 取出整个行(观测值)
conc rate state
1 0.02 76 treated
3 0.06 97 treated
5 0.11 123 treated

取出特定变量的值,用$符号

Puromycin$conc # 取出变量的值
[1] 0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10 0.02 0.02
[15] 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10

添加新的变量

添加新列iconc,使用$符号
R入门——数据框

添加新列iconc,使用with函数
R入门——数据框
使用transform,且一次性可定义多个变量
R入门——数据框

提取满足条件的子集(观测值)

函数subset

subset(Puromycin, state == “treated” & rate > 160)
conc rate state iconc conc2 sqrtconc
9 0.56 191 treated 1 2 3
10 0.56 201 treated 1 2 3
11 1.10 207 treated 1 2 3
12 1.10 200 treated 1 2 3

subset(Puromycin, conc > mean(conc))
conc rate state iconc conc2 sqrtconc
9 0.56 191 treated 1 2 3
10 0.56 201 treated 1 2 3
11 1.10 207 treated 1 2 3
12 1.10 200 treated 1 2 3
21 0.56 144 untreated 1 2 3
22 0.56 158 untreated 1 2 3
23 1.10 160 untreated 1 2 3

分组计算
函数summaryBy
需加载doBy包

library(doBy)
Warning message:
程辑包‘doBy’是用R版本3.6.2 来建造的

以state分组,计算conc列的均值,中位数以及方差

summaryBy(conc ~ state, data=Puromycin, FUN=c(mean, median, var))
state conc.mean conc.median conc.var
1 treated 0.3450000 0.165 0.1589000
2 untreated 0.2763636 0.110 0.1126055

排序
函数orderBy
按照变量conc排序

PuromycinOrder <- orderBy(~conc, data=Puromycin)
PuromycinOrder
conc rate state iconc conc2 sqrtconc
1 0.02 76 treated 1 2 3
2 0.02 47 treated 1 2 3
13 0.02 67 untreated 1 2 3
14 0.02 51 untreated 1 2 3
3 0.06 97 treated 1 2 3
4 0.06 107 treated 1 2 3
15 0.06 84 untreated 1 2 3
16 0.06 86 untreated 1 2 3
5 0.11 123 treated 1 2 3

后续——列表
(加油加油冲冲冲!learn!)