R——创建数据集

R——创建数据集

向量矩阵数组数据框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 向量
a <- c(1,2,3,4,5)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, FALSE, FALSE)
## 矩阵
# 默认按列排
d <- matrix(1:20, nrow = 5, ncol = 4)
d
e <- matrix(1:20, nrow = 5, byrow = TRUE)
e

cells <- c(1,2,3,5)
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
f <- matrix(cells, nrow = 2, byrow = T)
colnames(f) <- cnames
rownames(f) <- rnames
f

g <- matrix(cells, nrow =2, byrow = T, dimnames = list(rnames, cnames))
g

## 数组
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z = array(1:24, c(2,3,4), dimnames = list(dim1, dim2, dim3))
z

## 数据框
patientID <- c(1,2,3,4)
age <- c(12,13,15,16)
diabetes <- c("Type1", "Type2", "Type3", "Type4")
status <- c("Poor", "Improved", "Excellent", "Poor")
patient.data <- data.frame(patientID, age, diabetes, status)
patient.data

patient.data[1,2]
patient.data[c("diabetes", "status")]
patient.data$age

attach()&detach()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下面两段代码是等价的
data("mtcars")
summary(mtcars$mpg)
summary(mtcars$cyl)

attach(mtcars)
summary(mpg)
summary(cyl)
detach(mtcars)

## with()
# 下面一段代码和上面的两段代码是等价的
# with()的局限性在于赋值仅在此函数括号内有效。如果需要创建结构以外存在的对象,需要使用<<-赋值。
with(mtcars, {
m1 <- summary(mpg)
m2 <<- summary(mpg)
m1
m2
})
m1
m2

实例标志符:用于区分数据集中的不同个体

1
patient.data <- data.frame(patientID, age, diabetes, status, row.names = patientID)

因子的使用

1
2
3
patient.data$diabetes <- as.factor(patient.data$diabetes)
patient.data$status <- as.factor(patient.data$status)
summary(patient.data)

列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
h <- "My first list"
j <- c(25, 26, 18, 39)
k <- matrix(1:10, nrow = 5)
m <- c("One", "Two", "Three")
mylist <- list(title = h, ages = j, k, m)
mylist
mylist[1]
mylist[2]
mylist[[2]]
mylist[[1]]
mylist[[3]]
mylist[[4]]

## 将一个值赋值给某个向量、矩阵、数组或列表中一个不存在的元素时,R会自动扩展这个数据结构以容纳新值。

x <- c(1,2,3,4)
x[7] <- 7
x

## R中没有标量,标量以单元素向量的形式出现。

数据的输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 使用键盘输入数据
# numeric(0):将创建一个指定模式但不含实际数据的变量。
mydata <- data.frame(age = numeric(0),
gender = character(0),
weight = numeric(0))
mydata <- edit(mydata)
# 然后会打开数据表格

## 从带分隔符的文本文件导入数据
# 逗号分隔
da <- read.table(filenames, header = FALSE, sep = ",", row.names = "varnames")
# 制表符分隔
da <- read.table(filenames, header = FALSE, sep = "\t", row.names = "varnames")
# 默认字符型变量将被转换成因子
da <- read.table(filenames, header = FALSE, sep = "\t", row.names = "varnames", stringsAsFactors = FALSE)
# 但是这将停止所有转换,另外一个方法是使用colClasses为每一列指定一个类,例如logical/numeric/character/factor.

## 导入excel文件
library(xlsx)
# 然后使用read.xlsx()读取
## 导入Stata数据
library(foreign)
# read.dta()
# R

评论

程振兴

程振兴 @czxa.top
截止今天,我已经在本博客上写了658.8k个字了!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×