可视化:RStudio 入门 - Vector、Factor

119 阅读3分钟

本文已参加「新人创作礼」活动,一起开启掘金创作之路。

这次带来的是 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创建一个有序因子, 按照水果的个头从大到小定义因子水平