USYD悉尼大学DATA 2002 【R语言学习1】【介绍R】Introduction to R「虽迟但到」

本文详细介绍了R语言的基础知识,包括向量的创建、命名、运算和选择,矩阵的定义、运算以及添加行列,因子的创建、级别管理和运算,以及数据框的观察、创建和操作。通过实例演示了R语言中这些基本概念的使用方法,是学习R语言的良好起点。
摘要由CSDN通过智能技术生成


前言「揭秘」!!!

前一阵子被某个机构“约谈”,目的很简单,不合作就毁掉,或许这就是资本的力量吧。但这都打不垮小编,我会接着努力更新,给大家创建更多的免费开源的资源。希望我的博客对你们学习有帮助,虽迟但到!请谅解!

下面这部分主要介绍了R语言的基础知识,包括因子(factor),列表(list)和数据框(data frame)。

小编尽可能做详细,每个步骤讲清楚,重点知识一目了然,更加丰富的资源链接。如果博客有错误的地方,可以留言评论。


下载资源(待添加) 「最佳」

更加丰富的资源链接,包括知识图谱和文章资源。(后期找时间添加上,一个PDF版的知识图谱,一个博客的PDF版本。最近小编要赶due和更新任务量大,有的资源后期会添加上,请谅解)

1 基础知识介绍 Intro to basics

R 的第一步,了解如何将控制台用作计算器以及如何分配变量,您还将了解 R 中的基本数据类型。

1.1 注释

R使用 # 来进行注释要解释的内容,来增强代码的可读性。注释不会在R代码中运行,不会影响输出结果。
小tips:打完井号 # 后,养成习惯打一个空格再写注释内容。

# 这是一个注释,不会再代码中运行
# This is a comment and will not run in the code

1.2 R算术

在最基础的形式中,R可以当成一个简单的计算器。

运算运算符
加法+
减法-
乘法*
除法/
求幂^
模运算%%
> 1 + 1
[1] 2

> 4 - 1
[1] 3

> 2 * 3
[1] 6

> 9 / 3
[1] 3

> 2 ^ 5
[1] 32

> 32 %% 6
[1] 2

1.3 变量赋值

  1. 在编程中这是一个很基础的概念,称为变量。变量可以在R中存储值或对象,通过变量名访问想要的值或对象。通过 <- 的方法。
# 将数值100分配给mark , 将其输出
> mark <- 100
> mark
[1] 100
  1. 创建多个变量:我们可以创建多个变量,这些变量之间也可以进行运算。
# 创建两个变量,然后相加
> mid_mark <- 100
> finall_mark <- 100
> full_marl <- mid_mark + finall_mark
> full_marl
[1] 200

1.4 R中的基本数据类型

R中可以处理很多数据类型,下面是基础的入门级类型。

  • 十进制值,例如9.9,被称为numerics
  • 例如10,这样的值被称为integers。integers是numerics的一种。
  • TRUE or FALSE这样的布尔值,被称为logical
  • 文本或者字符串,被称为characters。 用引号表示"you are 小可爱",这是一个字符串。

不同的数据类型放在一起做运算可能会出现error。用class()function可以知道变量的数据类型。

# 声明三种不同的数据类型,然后输出
> numeric_data <- 88
> character_data <- "honey"
> logical_data <- TRUE

> class(numeric_data)
[1] "numeric"
> class(character_data)
[1] "character"
> class(logical_data)
[1] "logical"

2 向量 Vectors

介绍关于向量的知识点

2.1 创建向量

向量是一维数组,可以保存数值数据,字符串或逻辑数据。In oter word 来讲,向量是一种简单的数据存储工具。
在R中,可以使用组合函数创建一个向量 c(),将元素放在括号里,用逗号分隔。

# 创建三个类型的向量
> vector_numeric <- c(1 , 2 , 3)
> vector_character <- c('l' ,'o' , 'v' ,'e')
> vector_boolean <- c(TRUE ,TRUE ,FALSE)
> 
> vector_numeric
[1] 1 2 3
> vector_character
[1] "l" "o" "v" "e"
> vector_boolean
[1]  TRUE  TRUE FALSE

2.2 向量命名

  1. 当我们创建一些元素后,很难分辨不同元素是什么。可以使用 name() 函数为向量的元素命名。
# 通过命名,很好的知道这5天的钱数
> five_day_money <- c(22 , 34 , 55 , 11 , 99)
> names(five_day_money) <- c('day1' , 'day2' , 'day3' , 'day4' , 'day5')
> 
> five_day_money
day1 day2 day3 day4 day5 
  22   34   55   11   99 
  1. 第二种懒人命名方法
    创建一个字符串向量是要命名的内容。
# 这种方法要的就是高级感
> five_day_money <- c(22 , 34 , 55 , 11 , 99)
> vector_five_day <- c('day1' , 'day2' , 'day3' , 'day4' , 'day5')
> names(five_day_money) <- c(vector_five_day)
> 
> five_day_money
day1 day2 day3 day4 day5 
  22   34   55   11   99 

2.3 向量运算

  1. 有时候需要对向量进行算术运算,例如求和,减法等等。在R中对两个向量求和,需要按照元素求和。
> vector_1 <- c(2 , 5 ,9)
> vector_2 <- c(3 , 1 , 7)
> tot_vector <- vector_1 + vector_2
> 
> tot_vector
[1]  5  6 16
  1. 我们可以使用 sum() 函数计算所有向量的总和
# 创建五天分别的钱数,然后命名,计算每一个的总和,然后相加
> five_day_money1 <- c(22 , -34 , 55 , -11 , 99)
> five_day_money2 <- c(21 , 54 , -103 , -11 , -11)
> vector_five_day <- c('day1' , 'day2' , 'day3' , 'day4' , 'day5')
> 
> names(five_day_money1) <- vector_five_day
> names(five_day_money2) <- vector_five_day
> 
> total_1 <- sum(five_day_money1)
> total_2 <- sum(five_day_money2)
> total <- total_1 + total_2
> 
> total
[1] 81
  1. 比较运算,通过> o r<来比较是否正确,返回布尔值。
# 接着上面的 比较两个向量
> total_1 > total_2
[1] TRUE

> total_1 < total_2
[1] FALSE

2.4 向量取特定元素

  1. 使用 [ x ]方括号来指示要选择的元素。
    小tips:r语言是从1开始计数,Python是从0开始
#
> five_day_money1 <- c(22 , -34 , 55 , -11 , 99)
> first_day <- five_day_money1[1]
> first_day
[1] 22
  1. 选择特定的几个元素,在里面加上 c(x1,x2,x3......)
> five_day_money1 <- c(22 , -34 , 55 , -11 , 99)
> first_day <- five_day_money1[c(1 , 3 , 4)]
> first_day
[1]  22  55 -11
  1. 选择连续的特定值,变成两个参数 [x1 : x2].
> five_day_money1 <- c(22 , -34 , 55 , -11 , 99)
> first_day <- five_day_money1[1:4]
> first_day
[1]  22 -34  55 -11

2.5 比较选择

通过比较选择,更好的解决问题
R的逻辑比较运算符:

运算运算符
小于<
大于>
小于等于<=
大于等于>=
彼此相等==
彼此不等!=

3 矩阵 Matrix

介绍了如何创造矩阵,使用矩阵,了解它们的基本运算。

3.1 什么是矩阵?

在R中,矩阵是排列成固定数量,行和列相同的数字类型(数字,字符,逻辑值)元素的的集合。只处理行和列,所以矩阵被称为二维矩阵。

在R中,可以使用matrix() 函数来创建一个矩阵:matrix(1:9 , byrow = TRUE , nrow = 3)
第一个参数1:9 是创建向量的快捷方式:c(1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9)
第二个参数 byrow = TRUE,表示矩阵以行填充。
第三个参数nrow = 3,表示矩阵只有三行构成。

> matrix(1:9 , byrow = TRUE , nrow = 3)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

3.2 计算矩阵数

在R中,可以使用 rowSums() 来方便的计算出矩阵每一行的总数。

> my_data_m <- matrix(1:9 , byrow = TRUE , nrow = 3)
> rowSums(my_data_m)
[1]  6 15 24

3.3 矩阵添加列 or 行

在R中,我们可以使用 cbind() 函数向矩阵添加一列或多列,改函数将矩阵或项链刚按列合并在一起。

> my_data_m <- matrix(1:9 , byrow = TRUE , nrow = 3)
> my_data_m2 <- matrix(1:9 , byrow = TRUE , nrow = 3)
> all_data <- cbind(my_data_m2 , my_data_m)
> all_data
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    1    2    3
[2,]    4    5    6    4    5    6
[3,]    7    8    9    7    8    9

相同,我们可以使用 rbind() 函数来添加行。

> all_data <- rbind(my_data_m2 , my_data_m)
> all_data
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]    1    2    3
[5,]    4    5    6
[6,]    7    8    9

3.4 指定矩阵内容

我们可以使用 [ ] 来从矩阵选择一个躲着多个元素。

my_matrix[2 , 4] 选择了第2行第4列的元素
my_matrix[2 : 4 , 5 : 7] 选择了第2,3,4行5, 6,7列的元素。
my_matrix[ , 1] 选择了第1列的所有元素
my_matrix[1 , ] 选择了第1行的所有元素

3.5 矩阵算术

在矩阵也可以进行算术运算,+ _ * /等都可以在R中运算。
my_matrix * 2

4 因子(因素) Factor

数据通常属于有限数量的类别,在 R 中,分类数据存储在因子中。因素在数据分析中非常重要。

术语: 因子是指用于存储分类变量的统计数据类型。分类变量和连续变量之间的区别在于,分类变量可以属于有限数量的类别。另一方面,连续变量可以对应无限多个值。

R 知道它是处理连续变量还是分类变量很重要,因为您将来开发的统计模型会以不同的方式处理这两种类型。

4.1 创建因子(因素)

在R中,我们可以使用 factor() 函数,创建因子(因素)。
首先我们要创建一个向量,包含了观测值,然后用函数将向量编码为因子。

> three_day <- c('day1' , 'day2' , 'day3')
> factor_three_day <- factor(three_day)
> factor_three_day
[1] day1 day2 day3
Levels: day1 day2 day3

4.2 levels

当你第一次得到一个数据集时,你经常会注意到它包含具有特定因子水平的因子。但是,有时出于清晰或其他原因,您会想要更改这些级别的名称。

可以使用 levels() 函数

> good_day <- c('Y' , 'Y' , 'N' , 'Y' , 'N')
> factor_good_day <- factor(good_day)
> levels(factor_good_day) <- c('Yes' , "No")
> factor_good_day
[1] No  No  Yes No  Yes
Levels: Yes No

4.3 总结因子 summary()

在R中,我们想快速查看变量内容,可以使用 summary() 函数。

> good_day <- c('Y' , 'Y' , 'N' , 'Y' , 'N')
> summary(good_day)
   Length     Class      Mode 
        5 character character 

4.4 有序因子

在向量vector转换为序数因子的时候,类别具有自然顺序。在默认的情况下转换对的是无序因子。要创建有序因子,我们需要添加两个参数 order and levels

> five_day <- c('day5' , 'day3' , 'day1' , 'day4' , 'day2')
> order_faactor <- factor(five_day , 
						  ordered = TRUE , 
						  levels = c('day1' , 'day2','day3','day4' , 'day5'))
						  
> order_faactor
[1] day5 day3 day1 day4 day2
Levels: day1 < day2 < day3 < day4 < day5

5 数据框 Data frames

我们使用的大多数据集都是储藏为数据框(data frame)

数据框将数据集的变量作为列,将观测值作为行。对于来自不同统计软件包(如 SAS 或 SPSS)的人来说,这将是一个熟悉的概念。

5.1 观察数据集

在R中,我们可以使用head()tail() 观测数据的前六行和最后六行。

> install.packages("rpart")
> library(rpart)
> head(car90)
              Country Disp Disp2 Eng.Rev Front.Hd Frt.Leg.Room Frt.Shld Gear.Ratio Gear2  HP HP.revs Height
Acura Integra   Japan  112   1.8    2935      3.5         41.5     53.0       3.26  3.21 130    6000   47.5
Acura Legend    Japan  163   2.7    2505      2.0         41.5     55.5       2.95  3.02 160    5900   50.0
Audi 100      Germany  141   2.3    2775      2.5         41.5     56.5       3.27  3.25 130    5500   51.5
Audi 80       Germany  121   2.0    2835      4.0         42.0     52.5       3.25  3.25 108    5300   50.5
BMW 325i      Germany  152   2.5    2625      2.0         42.0     52.0       3.02  2.99 168    5800   49.5
BMW 535i      Germany  209   3.5    2285      3.0         42.0     54.5       2.80  2.85 208    5700   51.0

> tail(car90)
                   Country Disp Disp2 Eng.Rev Front.Hd Frt.Leg.Room Frt.Shld Gear.Ratio Gear2  HP HP.revs
Volkswagen GTI      Mexico  109   1.8    3000      3.5         41.5     53.0       3.26    NA 105    5400
Volkswagen Golf     Mexico  109   1.8    2980      3.0         41.0     53.0       3.27  3.41 100    5400
Volkswagen Jetta   Germany  109   1.8    2510      3.5         41.0     53.0       2.75  3.41 100    5400
Volkswagen Vanagon Germany  129   2.1    3370      5.0         39.0     61.5       4.11  4.09  90    4800
Volvo 240           Sweden  141   2.3    2330      3.5         41.5     54.0       2.71  2.57 114    5400
Volvo 740           Sweden  141   2.3    2305      2.5         42.0     56.5       2.71  2.83 114    5400

5.2 看看结构

在R中,我们经常需要快速浏览数据,并且知道数据的结构。可以使用str() 函数。
小tips:有同学知道 glimpse() 函数,和 str() 函数功能差不多,后期博客会详细讲到

> str(car90)
'data.frame':	111 obs. of  34 variables:
 $ Country     : Factor w/ 10 levels "Brazil","England",..: 5 5 4 4 4 4 10 10 10 NA ...
 $ Disp        : num  112 163 141 121 152 209 151 231 231 189 ...
 $ Disp2       : num  1.8 2.7 2.3 2 2.5 3.5 2.5 3.8 3.8 3.1 ...
 $ Eng.Rev     : num  2935 2505 2775 2835 2625 ...
 ...
 ...
 ...
 # 省略

5.3 创建数据框

我们可以自己创建一个数据框,使用 data.frame() 函数

> day <- c('day1' , 'day2' , 'day3' , 'day4' ,'day5')
> money <- c(122 , -22 , 33 , 56 , -43)
> feeling <- c('good' , 'bad' , 'tired' , 'happy' ,'died')
> 
> data_u <- data.frame(day , money , feeling)
> data_u
   day money feeling
1 day1   122    good
2 day2   -22     bad
3 day3    33   tired
4 day4    56   happy
5 day5   -43    died

5.4 选择数据框的元素

在R中,我们可以使用 [ ] 来筛选元素。
data_u[1 , 2] :选择第1行第2列的元素。
data_u[1:3 , 2:4] :选择第1,2,3行第2 ,3,4行的元素。
data_u[1 , ]:选择第1行的所有元素。

5.5 使用 $ 选择一整列

在R中,我们想通过简答的方法来筛选一整列,可以使用$

> data_u$day
[1] "day1" "day2" "day3" "day4" "day5"

5.6 指定数据框子集

在R中,我们想要一个子集的数据集,可以使用subset() 函数来提供相应的信息。

> subset(data_u , subset = money > 0)
   day money feeling
1 day1   122    good
3 day3    33   tired
4 day4    56   happy

5.7 排序

在R中,我们可以使用 order 函数进行排序,order() 是一个函数,当将每个元素应用于变量(例如向量)时,它会为您提供每个元素的排名位置:

> a <- c(1000 , 100 , 10000 , 2938)
> order(a)
[1] 2 1 4 3

6 列表 List

温故而知新:
向量(一维数组): 可以保存数字、字符或逻辑值。向量中的元素都具有相同的数据类型。
矩阵(二维数组): 可以容纳数字、字符或逻辑值。矩阵中的元素都具有相同的数据类型。
数据框(二维对象): 可以保存数字、字符或逻辑值。同一列中的所有元素都具有相同的数据类型,但不同的列可以具有不同的数据类型

与向量相反,列表可以包含不同类型的组件,就像您的待办事项列表可以包含不同类别的任务一样。本章将教您如何创建、命名和子集这些列表。

6.1 创建列表

在R中,我们可以使用 list() 函数创建列表。

> lovely_list <- list(1 , 2, 3)
> lovely_list
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

6.2 选择列表元素

要从向量中选择元素,请使用单个方括号:[ ]
您还可以使用 [[ ]]$ 符号来引用组件的名称。

小结 「竟是这样」

这一篇博客讲的偏向基础的知识点,可以温故而知新。
加油集美!加油铁子!

Resource

来源于Datacamp-Introduction to R
链接:Datacamp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值