R语言 | R基础知识

2022-03-29 17:27:08 浏览数 (2)

1安装包

问题:

如何安装R包?

方法:

使用install.packages()函数来安装包,括号中写上要安装的包的包名。以安装ggplot2包为例:

代码语言:javascript复制
install.packages("ggplot2")

讨论:

如果想要同时安装多个包,可以使用一个包的向量进行参数传递。

代码语言:javascript复制
install.packages(c("ggplot2","dplyr"))

2加载包

问题:

如何加载一个已经安装了的包?

方法:

使用library()函数,括号中写上要加载的包名。以加载ggplot2包为例:

代码语言:javascript复制
library(ggplot2)

3更新包

问题:

如何更新一个已经安装的包?

方法:

运行update.packages()命令:该命令可以提示你哪些包可以被更新。

代码语言:javascript复制
update.packages()

如果想要不加提示地更新所有包,可以加入参数ask = FALSE:

代码语言:javascript复制
update.packages(ask = FALSE)

4加载以符号分隔的文本文件

问题:

如何加载一个以符号分隔的文本文件中的数据?

方法:

读取文件中逗号分隔组(CSV文件)数据的最常用的方法是:

代码语言:javascript复制
data <- read.csv("datafile.csv")

讨论:

①手动为列名赋值

如果一个数据文件的行首没有列名,那么得到的数据框的列名将是V1、V2等。

代码语言:javascript复制
data <- read.csv("datafile.csv",  head = FALSE)

想要手动为列名赋值,需要用到names()函数,括号中需写上文件的名称。

代码语言:javascript复制
names(data) <- c("First","Second","Sex","Number")

②设置分隔符

sep参数可以设置分隔符。

如果是空格分隔,使用参数sep = ""

代码语言:javascript复制
data <- read.csv("datafile.csv", sep = "")

如果是以制表分隔符,sep参数应设置为t

代码语言:javascript复制
data <- read.csv("datafile.csv", sep ="t")

③数据类型转换

默认情况下,数据中字符串会被视为因子(factor)处理。以下图为例:得到的数据框会把First、Second等存储为因子,但是此时把他们视为字符串更为合理。

为了区别这一点,可以设置stringsASFactors = FALSE。如果有些列应该被处理为因子,可以再对其逐个转换。

代码语言:javascript复制
data <- read.csv("datafile.csv", stringsASFactors = FALSE)
#Sex转为因子类型
data$Sex <-factor(data$Sex)
#查看data内部结构
str(data)
#'data.frame':    3 obs. of  4 variables:
# $ First : chr  "Tom" "Dap" "Simitim"
# $ Second: chr  "Bobo" "Siam" "Naki"
# $ Sex   : Factor  "F" "M" "F"
# $ Number: int  2 49 21

5从Excel文件中加载数据

问题:

如何从Excel文件中加载数据?

方法:

readxl包中的read_excel()函数可以读取.xls和.xlsx等Excel文件。下面的代码将会读取Excel中的第一个工作表:

代码语言:javascript复制
#安装包
install.packages("readxl")
#加载包
library(readxl)
#读取数据
data <- read_excel("datafile.xlsx", 1)

讨论:

①读取指定工作表

使用read_excel()函数,既可以通过为sheet指定序数也可以通过sheet指定名字从其他工作表中加载数据:

代码语言:javascript复制
data <- read_excel("datafile.xlsx", sheet = 2)
data <- read_excel("datafile.xlsx", sheet = "CK")

②手动为列名赋值

如果不想第一行为列名,可以设置参数col_names = FALSE.相应地,各列会被命名为X1、X2等。自定义命名方法同上。

③自定义列的类型

默认情况下,read_excel()会自行判断每一列的数据类型。假如我们想要规定每一列的类型,可以使用col_types参数。我们也可以通过将某些列的类型设置为"blank"来丢弃它们。

代码语言:javascript复制
#去除第一列,指定之后3列的类型
data <- read_excel("datafile.xlsx", col_types = c("blank", "text", "date" ,"numeric")

6管道操作符%>%

问题:

如何以一种易读的方式调用一个函数并将其结果传递给另一个函数?

方法:

使用管道操作符%>%(快捷键:Ctrl Shift m)

代码语言:javascript复制
#管道符由dplyr包提供
library(dplyr)

#看一下morley数据集
view(morley)
#    Expt Run Speed
#001    1   1   850
#002    1   2   740
#003    1   3   900
#…… <94 more rows>……
#098    5  18   800
#099    5  19   810
#100    5  20   870

#加载morley数据集并将其传递给dplyr包中的filter()函数,
#仅仅保留Expt为1的那些行,之后该结果传递给summary()函数计算统计结果
morley %>%
 filter(Expt ==1) %>%
 summary()
#    Expt        Run            Speed     
# Min.   :1   Min.   : 1.00   Min.   : 650  
# 1st Qu.:1   1st Qu.: 5.75   1st Qu.: 850  
# Median :1   Median :10.50   Median : 940  
# Mean   :1   Mean   :10.50   Mean   : 909  
# 3rd Qu.:1   3rd Qu.:15.25   3rd Qu.: 980  
# Max.   :1   Max.   :20.00   Max.   :1070 

如果不使用管道符,前面的代码可以写成:

代码语言:javascript复制
summary(filter(morley,Expt ==1))

0 人点赞