本文已参加「新人创作礼」活动,一起开启掘金创作之路。
这次带来的是 RStudio 的入门知识 - Vector、Factor。
各个知识点后面都有对应的小练习哦,大家可以利用刚刚学到的知识来试着写写看!
Vector 向量
Vector
是 R 中最基本的对象, 在本节中, 我们将学习如何创建向量, 命名向量, 从向量中选择元素, 并做一些简单的数学运算.
- 创建一个向量(num, char, logical, factor)
- 向量的name (name of elements)
- 简单的数学运算
- 不同长度的向量之间的运算
- 向量的逻辑运算
- 创建更复杂的向量(seq, rep)
- 字符向量的粘贴
- 向量的索引
- 向量的索引(负)
- 向量的索引(逻辑)
# 创建一个向量(num, char, logical, factor)
v1 = c(1, 2, 3, 4, 5) # c for combine values into a vector or list
v2 = c(3, 0.14)
v3 = c("Apple", "Banana", "Cherry")
v4 = c(TRUE, FALSE)
v5 = factor(v3)
class(v5)
str(v5)
length(v5)
c(v1, v2)
c(v2, v3)
# 向量的name
names(v2) = c("int", "decimal")
v2
names(v3) = "fruit"
v3
names(v3) = NULL
v3
# 调用向量的名称
names(v2)
names(v4) = names(v2)
# 简单的数学运算
c(9, 9, 6) + c(2, 5, 1)
c(9, 9, 6) - c(2, 5, 1)
c(9, 9, 6) * c(2, 5, 1)
c(9, 9, 6) / c(2, 5, 1)
c(9, 9, 6) %/% c(2, 5, 1)
c(9, 9, 6) %% c(2, 5, 1)
c(9, 9, 6) ^ c(2, 5, 1)
# 不同长度的向量之间的运算
c(9, 9, 6) + c(1, 2)
c(1, 2, 3) + c(10, 100, 1000, 10000)
c(1, 2, 3) + 1
# 向量的逻辑运算
c(9, 9, 6) > c(0, 0, 7)
c(1, 2, 3) < 2
!(c(1, 2, 3) < 2)
TRUE & TRUE
FALSE & TRUE
TRUE | FALSE
FALSE | FALSE
!FALSE
!TRUE
c(TRUE, FALSE) & c(TRUE, TRUE)
# 创建更复杂的向量(seq, rep)
v1 = 1:100
v1
v2 = 100:1
v2
v3 = seq(from=1, to=100, by=1)
v3
seq(from=1, to=100, by=2)
seq(from=20, to=30, by=3)
seq(from=100, to=1, by=-3)
seq(100, 1, -3)
rep(1:5, each=3)
rep(1:5, times=3)
rep(1:5, times=1:5)
# 创建更复杂的向量(逻辑运算)
# 字符向量的粘贴
paste(c("a", "b", "c"), c("x", "y", "z"))
paste(c("a", "b", "c"), c("x", "y", "z"), sep="-")
paste(c("a", "b", "c"), c("x", "y", "z"), sep="***")
paste(c("a", "b", "c"), c("x", "y", "z"), sep="")
paste(c("a", "b", "c"), c("x", "y", "z"), collapse="&")
paste(c("a", "b", "c"), c("x", "y", "z"), sep="*", collapse="&")
paste(c("a", "b", "c"), "x")
paste(c("a", "b", "c"), 1:3)
paste(c("a", "b", "c"), 1)
paste("x", 1:5, sep="", collapse="+")
# 向量的索引
v1 = c(6:10, 1:5)
v1
v1[1]
v1[3]
v1[c(1, 3, 5)]
v1[5:9]
# 向量的索引(负)
v1[-1]
v1[c(-1, -2, -3)]
# 向量的索引(逻辑)
v1 > 4
v1[v1 > 4]
v1 %% 2
v1 %% 2 == 0
v1[v1 %% 2 == 0]
v1[v1 %% 2 != 0]
v1[(v1 %% 2 != 0) & (v1 > 4)]
# 修改已有的向量
v1 = 11:20
v1
v1[1] = 100
v1
c(v1, 1:3)
v1 = c(v1, 1:3)
习题
# Q1: 找出1~100以内所有能被4除余1的整数
# Q2: <孙子算经>今有物不知其数,三三数之剩其二,五五数剩其三,七七数剩其二,问物几何?
# Q3: 求出从公元元年到公元1000年中,所有闰年的年份 (闰年的定义: 能被4整除,且不能被100整除,但能被400整除的除外)
# Q4: 创建一个等差序列: 8,11,14,...,50
# Q5: 上题序列中能被5整除的是哪些数?
# Q6: 创建一个等比序列: 1,2,4,8,...,8192
Factor 因子
实际的数据中, 有一些是可以连续取值的(像整数或实数), 比如长度,气温,人口; 还有一些是只能在一些限定的类别中取值, 比如性别,肤色,学历等. 对于前一种数据, 我们将它保存在numeric
类型的对象中, 对于后一种categorical(类别型)
数据来说, 我们将它保存在factor(因子型)
类型的对象中. 对于数据分析而言, 因子型变量是非常重要的. 在本节中, 我们会学习如何创建和操作因子.
- 创建一个因子
- 因子的水平
- 自定义因子的水平
- 有序因子 Ordered factors
- 因子之间的比较
# 创建一个factor
gender = c("Male", "Male", "Female", "Female", "Male", "Female")
gender
class(gender)
factor_gender = factor(gender)
factor_gender
class(factor_gender)
# Factor levels 因子的水平
factor_gender
levels(factor_gender)
levels(factor_gender) = c("女", "男")
factor_gender
# 自定义因子的水平
pefermance = c("Low", "Medium", "High", "Medium")
factor_pefermance = factor(pefermance)
factor_pefermance
factor_pefermance = factor(pefermance, levels=c("Low","Medium","High"))
factor_pefermance
str(factor_pefermance)
as.numeric(factor_pefermance)
summary(factor_pefermance)
# Ordered Factors 有序因子
ordered_factor_pefermance = factor(pefermance, levels=c("Low","Medium","High"), ordered=TRUE)
ordered_factor_pefermance
# 因子之间的比较
ordered_factor_pefermance[1] < ordered_factor_pefermance[2]
factor_pefermance[1] < factor_pefermance[2]
习题
# Q1: 创建一个字符向量, 包含1个西瓜, 2个苹果, 1个樱桃, 并保存为fruit
# Q2: 根据fruit创建一个因子, 按照水果的个头从大到小定义因子水平, 保存为factor_fruit
# Q3: 根据fruit创建一个有序因子, 按照水果的个头从大到小定义因子水平