.环境配置
控制台命令r 进入r语言之执行环境
Rscrpit file.R 在控制台中执行R脚本

2.数据类型
R语言与其他编程语言(如C语言和Java)相反,变量不会被声明为某些数据类型。 变量被分配给R对象,并且R对象的数据类型转变为变量的数据类型。 有很多类型的R对象。
在R编程中,非常基本的数据类型是叫作向量的R对象,它们保存不同类的元素,如上所示。 请注意在R语言中,类型的数量不仅限于上述六种类型。 例如,我们可以使用许多原子向量并创建一个数组,其类型将成为数组。



当要创建具有多个元素的向量时,应该使用c()函数,表示将元素组合成一个向量

Create a vector.
 apple <- c(‘red’,‘green’,“yellow”);
 print(apple);Get the class of the vector.
 print(class(apple));



列表是一个R对象,它可以包含许多不同类型的元素,如向量,函数,甚至其中的另一个列表。# Create a list.

矩阵是二维矩形数据集。 它可以使用向量输入到矩阵函数来创建。# Create a matrix.
M = matrix( c(‘a’,‘a’,‘b’,‘c’,‘b’,‘a’), nrow = 2, ncol = 3, byrow = TRUE)
print(M)

list1 <- list(c(2,5,3),21.3,sin);
#Print the list.
 print(list1);



矩阵只能有两个维度,数组可以是任意数量的维数。数组函数采用一个dim属性,创建所需的维数。 在下面的例子中,我们创建一个有两个元素的数组,每个元素都是3x3个矩阵。# Creat

e an array.
 a <- array(c(‘green’,‘yellow’),dim = c(3,3,2))
 print(a)
 [,1] [,2] [,3]
 [1,] “a” “a” “b”
 [2,] “c” “b” “a”

因子是使用向量创建的R对象。 它将向量存储在向量中的元素的不同值作为标签。标签始终是字符,无论它是输入向量中是数字,还是字符或布尔等。它们在统计建模中很有用。因子使用factor()函数创建。nlevels函数给出了级别的计数。# Create a vector.

apple_colors <- c(‘green’,‘green’,‘yellow’,‘red’,‘red’,‘red’,‘green’)
#Create a factor object.
 factor_apple <- factor(apple_colors)Print the factor.
 print(factor_apple)
 print(nlevels(factor_apple))

数据帧是表格数据对象。与数据帧中的矩阵不同,每列可以包含不同的数据模式。 第一列是数字,而第二列可以是字符,第三列可以是逻辑类型。它是一个长度相等的向量列表。数据帧使用data.frame()函数创建。# Create the data frame.

BMI <- data.frame(
 gender = c(“Male”, “Male”,“Female”),
 height = c(152, 171.5, 165),
 weight = c(81,93, 78),
 Age = c(42,38,26)
 )
 print(BMI)

2.变量
变量提供了程序可以操作的命名存储。R语言中的变量可以存储原子向量,原子向量组或许多R对象的组合。有效的变量名称应该是由字母,数字和点或下划线字符组成。 变量名称以字母开头,或者点后面不带数字。如下一些示例 -

linuxprobe 变量提供了程序可以操作的命名存储。R语言中的变量可以存储原子向量,原子向量组或许多R对象的组合。有效的变量名称应该是由字母,数字和点或下划线字符组成。 变量名称以字母开头,或者点后面不带数字。如下一些示例 -
变量名 合法性 原因
var_name2. 有效 由字母,数字,点和下划线组成
var_name% 无效 含有字符“%”因此无效。只允许点(.)和下划线(_)组成。
2var_name 无效 以数字开头,因此无效。
.var_name, var.name 有效 可以以点(.)开头,但点(.)后面不应是数字。
.2var_name 无效 以点(.)但后跟一个数字使其无效。
var_name 无效 以下划()开始因此无效。变量赋值变量可以使用向左,向右和等于运算符分配值。 可以使用print()或cat()函数打印变量的值。 cat()函数将多个变量或项目组合成一个连续的打印输出。# Assignment using equal operator.

var.1 = c(0,1,2,3)
#Assignment using leftward operator.
 var.2 <- c(“learn”,“R”)Assignment using rightward operator.
 c(TRUE,1) -> var.3print(var.1)
 cat (“var.1 is “, var.1 ,”\n”)
 cat (“var.2 is “, var.2 ,”\n”)
 cat (“var.3 is “, var.3 ,”\n”)

在R中,变量本身没有被声明为任何数据类型,而是获取分配给它的R对象的数据类型。 所以R被称为动态类型语言,这意味着我们可以在程序中使用它时一次又一次地改变同一个变量的变量的数据类型,或者使用同一个变量来存储任何数据类型

想要知道工作区中当前可用的所有变量,可使用ls()函数。ls()函数也可以使用模式来匹配变量名。
print(ls(pattern = “var”)

可以使用rm()函数删除变量。下面假设要删除变量var.3。 在打印时抛出变量错误的值。

删除所有变量可以通过使用rm()和ls()函数一起来完成。rm(list = ls())
print(ls())

3.运算符
其他运算符这些运算符用于特定目的,而不是一般的数学或逻辑运算。冒号运算符(? - 它为向量创建一系列数字。参考以下代码 -v <- 2:8;
print(v);
R执行上面示例代码,得到以下结果 - [1] 2 3 4 5 6 7 8

成员运算符(%in%) - 该运算符用于识别元素是否属于向量。参考以下代码 -v1 <- 8 ;

v2 <- 12;
 t <- 1:10;
 print(v1 %in% t) ;
 print(v2 %in% t) ;


R执行上面示例代码,得到以下结果 - [1] TRUE
[1] FALSE

4.函数
内置函数的简单示例有:seq(),mean(),max(),sum(x)和paste(…)等。它们可在用户编写的程序直接调用。可以参考广泛使用的R函数。# Create a sequence of numbers from 32 to 44.

print(seq(32,44))
Find mean of numbers from 25 to 82.
 print(mean(25:82))Find sum of numbers frm 41 to 68.
 print(sum(41:68))

5.字符串
在R中的单引号或双引号中写入的任何值都将被视为字符串。在R内部将每个字符串存储在双引号内,即使您使用单引号创建它们。

适用于字符串构造的规则字符串开头和结尾的引号应为双引号或双引号,他们不能混合。双引号可以插入到以单引号开始和结尾的字符串中。单引号可以插入到以双引号开始和结尾的字符串中。双引号不能插入到以双引号开始和结尾的字符串中。单引号无法插入到以单引号开始和结尾的字符串中。
连接字符串 - paste()函数R中的许多字符串使用paste()函数进行组合,可以将任意数量的参数组合在一起。语法粘贴函数的基本语法是 -paste(…, sep = " ", collapse = NULL)
R以下是使用的参数的描述 -… - 表示要组合的任何数量的参数。sep - 表示参数之间的任何分隔符,这是一个可选项。collapse - 用于消除两个字符串之间的空格,但不是一个字符串的两个单词之间的空格。例子a <- “Hello”

b <- ‘How’
 c <- "are you? "print(paste(a,b,c))
print(paste(a,b,c, sep = “-”))
print(paste(a,b,c, sep = “”, collapse = “”))
 R当我们执行上述代码时,会产生以下结果 -[1] "Hello How are you? "
 [1] "Hello-How-are you? "
 [1] "HelloHoware you

?

连接字符串 - paste()函数R中的许多字符串使用paste()函数进行组合,可以将任意数量的参数组合在一起。语法粘贴函数的基本语法是 -paste(…, sep = " ", collapse = NULL)
R以下是使用的参数的描述 -… - 表示要组合的任何数量的参数。sep - 表示参数之间的任何分隔符,这是一个可选项。collapse - 用于消除两个字符串之间的空格,但不是一个字符串的两个单词之间的空格。例子a <- “Hello”

b <- ‘How’
 c <- "are you? "print(paste(a,b,c))
print(paste(a,b,c, sep = “-”))
print(paste(a,b,c, sep = “”, collapse = “”))
 R当我们执行上述代码时,会产生以下结果 -[1] "Hello How are you? "
 [1] "Hello-How-are you? "
 [1] "HelloHoware you?

格式化数字和字符串 - format()函数
format()函数的基本语法是 -format(x, digits, nsmall, scientific, width, justify = c(“left”, “right”, “centre”, “none”))
R以下是使用的参数的描述 - x - 是输入的向量。digits - 是显示的总数。nsmall - 小数点右侧的最小位数。scientific - 设置为TRUE,以显示科学符号。width - 表示开始填充空白时要显示的最小宽度。justify - 是将字符串显示为左,右或中心

计数字符串中的字符数 - nchar()函数
此函数计算字符串中包含空格的字符数。nchar()函数的基本语法是 -nchar(x)
R以下是使用的参数的描述 - x - 是输入的向量。

更改大小写 - toupper()&tolower()函数
toupper()&tolower()函数的基本语法是 -toupper(x)
tolower(x)
R以下是使用的参数的描述 - x - 是输入的向量。

取字符串的substring()函数此函数提取String的部分。语法substring()函数的基本语法是 -substring(x,first,last)
R以下是使用的参数的描述 - x - 是字符输入向量。first - 是要提取的第一个字符的位置。last - 是要提取的最后一个字符的位置

6.向量
向量是最基本的R数据对象,有六种类型的原子向量。它们分别是逻辑,整数,双重,复杂,字符和原始
1.单元素矢量即使在R中只写入一个值,它也会被认为是一个长度为1的向量,属于上述向量类型之一。
2.2.多元素向量使用冒号运算符与数字数据 - # Creating a sequence from 5 to 13.
v <- 5:13

使用序列(Seq.)运算符# Create vector with elements from 5 to 9 incrementing by 0.4.
print(seq(5, 9, by = 0.4))

使用c()函数如果其中一个元素是字符,则非字符值被强制为字符类型。# The logical and numeric values are converted to characters.
s <- c(‘apple’,‘red’,5,TRUE)
print(s)

使用c()函数如果其中一个元素是字符,则非字符值被强制为字符类型

使用索引访问向量的元素。[]括号用于指定索引。索引从位置1开始。在索引中赋予负值会从结果中删除该元素。TRUE,FALSE或0和1也可用于索引。# Accessing vector elements using

position.
 t <- c(“Sun”,“Mon”,“Tue”,“Wed”,“Thurs”,“Fri”,“Sat”)
 u <- t[c(2,3,6)]
 print(u)#Accessing vector elements using logical indexing.
 v <- t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]
 print(v)#Accessing vector elements using negative indexing.
 x <- t[c(-2,-5)]
 print(x)Accessing vector elements using 0/1 indexing.
 y <- t[c(0,0,0,0,0,0,1)]
 print(y)
 R当我们执行上述代码时,会产生以下结果
 [1] “Mon” “Tue” “Fri”
 [1] “Sun” “Fri”
 [1] “Sun” “Tue” “Wed” “Fri” “Sat”
 [1] “Sun”

向量算术
可以将相同长度的两个向量相加,减去,相乘或相除,给出结果作为向量输出
向量元素回收如果我们对两个不等长度的向量应用算术运算,则将循环使用较短向量的元素来完成操作
向量元素回收如果我们对两个不等长度的向量应用算术运算,则将循环使用较短向量的元素来完成操作。v1 <- c(3,8,4,5,0,11)

v2 <- c(4,11)
 V2 becomes c(4,11,4,11,4,11)add.result <- v1+v2
 print(add.result)sub.result <- v1-v2


print(sub.result)
R当我们执行上述代码时,会产生以下结果 -[1] 7 19 8 16 4 22

[1] -1 -3 0 -6 -4 0

向量元素排序可以使用sort()函数对向量中的元素进行排序。v <- c(3,8,4,5,0,11, -9, 304)

Sort the elements of the vector.
 sort.result <- sort(v)
 print(sort.result)#Sort the elements in the reverse order.
 revsort.result <- sort(v, decreasing = TRUE)
 print(revsort.result)Sorting character vectors.
 v <- c(“Red”,“Blue”,“yellow”,“violet”)
 sort.result <- sort(v)
 print(sort.result)Sorting character vectors in reverse order.
 revsort.result <- sort(v, decreasing = TRUE)
 print(revsort.result)


R当我们执行上述代码时,会产生以下结果 -[1] -9 0 3 4 5 8 11 304

[1] 304 11 8 5 4 3 0 -9
 [1] “Blue” “Red” “violet” “yellow”
 [1] “yellow” “violet” “Red” “Blue”

7.列表
列表是包含不同类型的元素的R对象,如数字,字符串,向量,以及列表中也可包含另一个列表。 列表还可以包含矩阵或函数作为其元素。列表是使用list()函数来创建的。
命名列表元素列表元素可以被赋予名字,并且可以使用这些名称访问列表元素。
访问列表元素列表的元素可以通过列表中的元素的索引来访问。在命名列表的情况下,也可以使用名称进行访问。

操纵列表元素我们可以添加,删除和更新列表元素,如下所示。 我们只能在列表末尾添加和删除元素。 但是可以更新任何位置的元素。

合并列表将所有列表放在一个list()函数中,可以将多个列表合并成一个列表

将列表转换为向量可以将列表转换为向量,使得向量的元素可以用于进一步的操作。 在将列表转换为向量后,可以应用所有对向量的算术运算。要做这个转换可以使用unlist()函数。 它将列表作为输入并生成一个向量。

矩阵是其中元素以二维矩形布局排列的R对象。它们包含相同原子类型的元素。 虽然我们可以创建一个仅包含字符或仅包含逻辑值的矩阵,但它们没有太多用处。 我们使用包含数学元素的矩阵来在数学计算中使用。矩阵可通过使用matrix()函数来创建。

在R中创建矩阵的基本语法是 -matrix(data, nrow, ncol, byrow, dimnames)
R以下是使用的参数的描述 - data - 是将要转为矩阵元素的输入向量。nrow - 是要创建的行数。ncol - 是要创建的列数。byrow - 是一个逻辑线索。 如果为TRUE,则输入向量元素按行排列。dimname - 是分配给行和列的名称。

访问矩阵的元素可以使用元素的列和行索引来访问矩阵的元素。 我们考虑上面的矩阵P来找到下面的具体元素

Define the column and row names.

rownames = c(“row1”, “row2”, “row3”, “row4”)
 colnames = c(“col1”, “col2”, “col3”)Create the matrix.
 P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))Access the element at 3rd column and 1st row.
 print(P[1,3])#Access the element at 2nd column and 4th row.
 print(P[4,2])Access only the 2nd row.
 print(P[2,])

矩阵计算使用R运算符对矩阵执行各种数学运算,操作的结果也是一个矩阵。操作中涉及的矩阵的尺寸(行数和列数)应相同。

8.数组
数组是可以在二维及以上存储数据的R数据对象。 例如 - 如果创建一个维数组(2,3,4),那么它将创建4个矩形矩阵,每个矩阵具有2行和3列。数组只能存储数据类型。数组可通过使用array()函数来创建。 它将向量作为输入,并使用dim参数中的值来创建数组。

数组是可以在二维及以上存储数据的R数据对象。 例如 - 如果创建一个维数组(2,3,4),那么它将创建4个矩形矩阵,每个矩阵具有2行和3列。数组只能存储数据类型。数组可通过使用array()函数来创建。 它将向量作为输入,并使用dim参数中的值来创建数组。
命名列和行可以使用dimnames参数为数组中的行,列和矩阵命名。# Create two vectors of different lengths.

vector1 <- c(5,9,3)
 vector2 <- c(10,11,12,13,14,15)
 column.names <- c(“COL1”,“COL2”,“COL3”)
 row.names <- c(“ROW1”,“ROW2”,“ROW3”)
 matrix.names <- c(“Matrix1”,“Matrix2”)访问数组元素有关如何访问数组元素,请参考以下代码实现 - # Create two vectors of different lengths.
 vector1 <- c(5,9,3)
 vector2 <- c(10,11,12,13,14,15)
 column.names <- c(“COL1”,“COL2”,“COL3”)
 row.names <- c(“ROW1”,“ROW2”,“ROW3”)
 matrix.names <- c(“Matrix1”,“Matrix2”)#Take these vectors as input to the array.
 result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,
 column.names, matrix.names))#Print the third row of the second matrix of the array.
 print(result[3,2])#Print the element in the 1st row and 3rd column of the 1st matrix.
 print(result[1,3,1])#Print the 2nd Matrix.
 print(result[,2])

操纵数组元素由于数组是由多个维度组成的矩阵,通过访问矩阵的元素来执行数组元素的相关操作。# Create two vectors of different lengths.

vector1 <- c(5,9,3)
 vector2 <- c(10,11,12,13,14,15)#Take these vectors as input to the array.
 array1 <- array(c(vector1,vector2),dim = c(3,3,2))#Create two vectors of different lengths.
 vector3 <- c(9,1,0)
 vector4 <- c(6,0,11,3,14,1,2,6,9)
 array2 <- array(c(vector1,vector2),dim = c(3,3,2))#create matrices from these arrays.
 matrix1 <- array1[,2]
 matrix2 <- array2[,2]#Add the matrices.
 result <- matrix1+matrix2
 print(result)操纵数组元素由于数组是由多个维度组成的矩阵,通过访问矩阵的元素来执行数组元素的相关操作。
 matrix1 <- array1[,2]
 matrix2 <- array2[,2]

跨数组元素的计算我们可以使用apply()函数对数组中的元素进行计算。语法apply(x, margin, fun)
Shell以下是使用的参数的描述 - x - 是一个数组。margin - 是使用的数据集的名称。fun - 是应用于数组元素的函数。例子使用下面的apply()函数来计算所有矩阵中数组的行中的元素的总

和。# Create two vectors of different lengths.
 vector1 <- c(5,9,3)
 vector2 <- c(10,11,12,13,14,15)#Take these vectors as input to the array.
 new.array <- array(c(vector1,vector2),dim = c(3,3,2))
 print(new.array)#Use apply to calculate the sum of the rows across all the matrices.
 result <- apply(new.array, c(1), sum)
 print(result)

9.因子
因子是用于对数据进行分类并将其存储为级别的数据对象。它们可以存储字符串和整数。 它们在具有有限数量的唯一值的列中很有用。 像“男”,“女”,“真”,“假”等。它们在统计建模的数据分析中很有用。因子可通过factor()函数使用向量作为输入来创建。

#Create the vectors for data frame.
 height <- c(132,151,162,139,166,147,122)
 weight <- c(48,49,66,53,67,52,40)
 gender <- c(“male”,“male”,“female”,“female”,“male”,“female”,“male”)#Create the data frame.
 input_data <- data.frame(height,weight,gender)
 print(input_data)
 #Test if the gender column is a factor.
 print(is.factor(input_data$gender))#Print the gender column so see the levels.
 print(input_data$gender)改变级别顺序可以通过用新的级别顺序再次应用因子函数来改变因子中级别的顺序。参考以下实现代码 - data <- c(“East”,“West”,“East”,“North”,“North”,“East”,“West”,“West”,“West”,“East”,“North”)
 #Create the factors
 factor_data <- factor(data)
 print(factor_data)#Apply the factor function with required order of the level.
 new_order_data <- factor(factor_data,levels = c(“East”,“West”,“North”))
 print(new_order_data)

产生因子级别可以通过使用gl()函数来生成因子级别。它需要两个整数作为输入,它表示每个级别有多少级别和多少次。语法gl(n, k, labels)
R以下是使用的参数的描述 - n - 是给出级别数的整数。k - 是给出复制次数的整数。labels - 是所得因子水平的标签向量。例子v <- gl(3, 4, labels = c(“Tampa”, “Seattle”,“Boston”))

print(v)
 R当我们执行上述代码时,会产生以下结果 -Tampa Tampa Tampa Tampa Seattle Seattle Seattle Seattle Boston
 [10] Boston Boston Boston
 Levels: Tampa Seattle Boston

10.数据帧
数据帧是一个表或二维类似数组的结构,其中每列包含一个变量的值,每行包含来自每一列的一组值。以下是数据帧的特征 - 列名称应该不为空。行名称应该是唯一的。存储在数据帧中的数据可以是数字,因子或字符类型。每列应包含相同数量的数据项。创建数据帧# Create the data frame.

emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2017-01-01”, “2017-09-23”, “2017-11-15”, “2017-05-11”,
 “2018-03-27”)),
 stringsAsFactors = FALSE
 )
 #Print the data frame.
 print(emp.data)
 R当我们执行上述代码时,会产生以下结果 - emp_id emp_name salary start_date
 1 1 Rick 623.30 2017-01-01
 2 2 Dan 515.20 2017-09-23
 3 3 Michelle 611.00 2017-11-15
 4 4 Ryan 729.00 2017-05-11
 5 5 Gary 843.25 2018-03-27

获取数据帧的结构通过使用str()函数可以查看数据帧的结构,参考以下代码实现 - # Create the data frame.

emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2017-01-01”, “2017-09-23”, “2017-11-15”, “2017-05-11”,
 “2018-03-27”)),
 stringsAsFactors = FALSE
 )
 #Get the structure of the data frame.
 str(emp.data)

数据帧数据摘要数据的统计摘要和性质可以通过应用summary()函数获得。# Create the data frame.

emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2015-01-01”, “2016-09-23”, “2017-11-15”, “2018-05-11”,
 “2018-03-27”)),
 stringsAsFactors = FALSE
 )

Print the summary.

R当我们执行上述代码时,会产生以下结果 - emp_id emp_name salary start_date
 Min. :1 Length:5 Min. :515.2 Min. :2015-01-01
 1st Qu.:2 Class :character 1st Qu.:611.0 1st Qu.:2016-09-23
 Median :3 Mode :character Median :623.3 Median :2017-11-15
 Mean :3 Mean :664.4 Mean :2017-03-28
 3rd Qu.:4 3rd Qu.:729.0 3rd Qu.:2018-03-27
 Max. :5 Max. :843.2 Max. :2018-05-11从数据帧提取数据使用列名称从数据帧中提取特定列。# Create the data frame.
 emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2012-01-01”,“2013-09-23”,“2014-11-15”,“2014-05-11”,
 “2015-03-27”)),
 stringsAsFactors = FALSE
 )
 #Extract Specific columns.
 result <- data.frame(emp.datasalary)
 print(result)#Extract first two rows.
 result <- emp.data[1:2,]

Extract 3rd and 5th row with 2nd and 4th column.

result <- emp.data[c(3,5),c(2,4)]
扩展数据帧可以通过添加列和行来扩展数据帧。添加列只需使用新的列名来添加列向量。参考以下示例代码 - # Create the data frame.
 emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2012-01-01”, “2013-09-23”, “2014-11-15”, “2014-05-11”,
 “2015-03-27”)),
 stringsAsFactors = FALSE
 )

Add the “dept” coulmn.

emp.data$dept <- c(“IT”,“Operations”,“IT”,“HR”,“Finance”)
 v <- emp.data
 print(v)添加行要将更多行永久添加到现有数据帧,需要使用与现有数据帧相同结构的新行,并使用rbind()函数。在下面的示例中,我们使用新行创建一个数据帧,并将其与现有的数据帧进行合并,以创建最终的数据帧。# Create the first data frame.
 emp.data <- data.frame(
 emp_id = c (1:5),
 emp_name = c(“Rick”,“Dan”,“Michelle”,“Ryan”,“Gary”),
 salary = c(623.3,515.2,611.0,729.0,843.25),start_date = as.Date(c(“2012-01-01”, “2013-09-23”, “2014-11-15”, “2014-05-11”,
 “2015-03-27”)),
 dept = c(“IT”,“Operations”,“IT”,“HR”,“Finance”),
 stringsAsFactors = FALSE
 )Create the second data frame
emp.newdata <- data.frame(
 emp_id = c (6:8),
 emp_name = c(“Rasmi”,“Pranab”,“Tusar”),
 salary = c(578.0,722.5,632.8),
 start_date = as.Date(c(“2013-05-21”,“2013-07-30”,“2014-06-17”)),
 dept = c(“IT”,“Operations”,“Fianance”),
 stringsAsFactors = FALSE
 )

Bind the two data frames.

emp.finaldata <- rbind(emp.data,emp.newdata)
 print(emp.finaldata)11.安装包lib
 加载包到库
 代码中可以使用包之前,必须将其加载到当前的R环境中。还需要加载先前已安装但在当前环境中不可用的软件包。使用以下命令加载程序包 -library(“package Name”, lib.loc = “path to library”)#Load the package named “XML”
 install.packages(“D:/XML_3.98-1.3.zip”, repos = NULL, type = “source”)

12.R语言数据重塑
在数据框中连接列和行
我们可以使用cbind()函数连接多个向量来创建数据帧。也可以使用rbind()函数合并两个数据帧。

可以使用merge()函数合并两个数据帧。数据帧必须具有相同的列名称,合并发生。在下面的例子中,我们考虑了Pima印度妇女的糖尿病数据库,可以在名称为“MASS”的库中找到。 我们根据血压值(“bp”)和体重指数(“bmi”)合并两个数据集。 在选择这两列进行合并时,这两个变量的值在两个数据集中匹配的记录被组合在一起以形成单个数据帧。参考以下代码实现 - library

(MASS)
 merged.Pima <- merge(x = Pima.te, y = Pima.tr,
 by.x = c(“bp”, “bmi”),
 by.y = c(“bp”, “bmi”)
 )
 print(merged.Pima)
 nrow(merged.Pima)R编程最有趣的一个方面是在多个步骤中改变数据的形状以获得所需的形状。 用于执行此操作的函数称为melt()和cast()。考虑使用“MASS”库中存在的数据集。
13.CSV
 获得最高工资的人员的详细信息可以使用过滤条件subset()获取符合特定的行,类似于SQL的where子句。setwd(“F:/worksp/R”)
 #Create a data frame.
 data <- read.csv(“input.csv”)#Get the max salary from data frame.
 sal <- max(data$salary)#Get the person detail having max salary.
 retval <- subset(data, salary == max(salary))
 print(retval)
 R当我们执行上述代码时,会产生以下结果 - id name salary start_date dept
 5 NA Gary 843.25 2015-03-27 Financesubset(csvdata,condition)
 ex.
 salary > 600 & dept == “IT”
 as.Date(start_date) > as.Date(“2014-01-01”)时间条件

14.Excel
读取Excel文件使用read.xlsx()函数读取input.xlsx,如下所示,结果作为数据帧存储在R环境中。# Read the first worksheet in the file input.xlsx.

data <- read.xlsx(“input.xlsx”, sheetIndex = 1)
 print(data)15.二进制
 R有两个函数用来创建和读取二进制文件,它们分别是:WriteBin()和readBin()函数。
 语法writeBin(object, con)
 readBin(con, what, n )
 R以下是使用的参数的描述 - con - 是要读取或写入二进制文件的连接对象。object - 是要写入的二进制文件。what - 是像字符,整数等的模式,代表要读取的字节。n - 是从二进制文件读取的字节数。
 这里考虑使用R内置数据“mtcars”。 首先,我们从它创建一个csv文件并将其转换为二进制文件并将其存储为操作系统文件。接下来将这个二进制文件读入R中。16.XML
 读取XML文件R使用xmlParse()函数来读取xml文件,它作为列表存储在R中。获取XML文件中存在的节点数
 #Load the packages required to read XML files.
 library(“XML”)
 library(“methods”)#Give the input file name to the function.
 result <- xmlParse(file = “input.xml”)#Exract the root node form the xml file.
 rootnode <- xmlRoot(result)#Find number of nodes in the root.
 rootsize <- xmlSize(rootnode)Print the result.
 print(rootsize)下面来看看如何解析文件的第一条记录,它将给出对顶级节点中存在的各种元素的详细信息。
 print(rootnode[1])
 获取节点的其它元素
 #Get the first element of the first node.
 print(rootnode[[1]][[1]])XML转到数据帧为了在大文件中有效处理数据,我们以xml文件的形式读取数据作为数据帧。然后处理数据帧进行数据分析。# Load the packages required to read XML files.
 library(“XML”)
 library(“methods”)#Convert the input xml file to a data frame.
 xmldataframe <- xmlToDataFrame(“input.xml”)
 print(xmldataframe)17.JSON
 R使用JSON()函数读取JSON文件的内容,它作为列表存储在R中。参考以下代码 - # Load the package required to read JSON files.
 library(“rjson”)#Give the input file name to the function.
 result <- fromJSON(file = “input.json”)#Print the result.
 print(result)
 将JSON转换为数据帧我们可以将上述提取的数据通过使用as.data.frame()函数转换为R数据帧,以便进一步分析。# Load the package required to read JSON files.
 library(“rjson”)#Give the input file name to the function.
 result <- fromJSON(file = “input.json”)#Convert JSON file to a data frame.
 json_data_frame <- as.data.frame(result)print(json_data_frame)

我们将使用函数getHTMLLinks()来收集文件的URL。然后将使用函数download.file()将文件保存到本地系统。由于我们将为多个文件一次又一次地应用相同的代码,所以将创建一个被多次调用的函数。文件名作为参数以R列表对象的形式传递给此函数。

18.MySQL
将R连接到MySql当安装了软件包(RMySQL)之后,我们在R中创建一个连接对象以连接到数据库。它需要用户名,密码,数据库名称和主机名等数据库连接所需要的信息。

library(“RMySQL”);
 #Create a connection Object to MySQL database.
 #We will connect to the sampel database named “testdb” that comes with MySql installation.
 mysqlconnection = dbConnect(MySQL(), user = ‘root’, password = ‘123456’, dbname = ‘testdb’,
 host = ‘localhost’)#List the tables available in this database.
 dbListTables(mysqlconnection)

19.饼状图
在R中,使用将正数作为向量输入的pie()函数创建饼状图。附加参数用于控制标签,颜色,标题等。语法使用R编程语言创建饼图的基本语法是 -pie(x, labels, radius, main, col, clockwise)
R以下是使用的参数的描述 -x - 是包含饼图中使用的数值的向量。labels - 用于描述切片的标签。radius - 用来表示饼图圆的半径(-1和+1之间的值)。main - 用来表示图表的标题。col - 表示调色板。clockwise - 是一个逻辑值,指示片是顺时针还是逆时针绘制。

#Create data for the graph.
 x <- c(11, 30, 39, 20)
 labels <- c(“70后”, “80后”, “90后”, “00后”)#Give the chart file a name.
 png(file = “birth_of_age.jpg”)#Plot the chart.
 pie(x,labels)#Save the file.
 dev.off()

可以通过向函数添加更多参数来扩展图表的特征。我们将使用参数main向图表添加标题,另一个参数是col,在绘制图表时将使用彩虹色托盘。托盘的长度应与图表的数量相同。 因此我们使用length(x)。例子以下脚本将创建一个饼图图片文件(age_title_colours.jpg)并保存当前R工作目录中。# Create data for the graph.

x <- c(11, 30, 39, 20)
 labels <- c(“70后”, “80后”, “90后”, “00后”)#Give the chart file a name.
 png(file = “age_title_colours.jpg”)#Plot the chart with title and rainbow color pallet.
 pie(x, labels, main = “出生年龄段 - 饼状图”, col = rainbow(length(x)))#Save the file.
 dev.off()

可以使用附加包来绘制具有3个维度的饼图。软件包plotrix中有一个名为pie3D()的函数,用于此效果。参考以下代码 - 注: 如果没有安装软件库:plotrix,可先执行install.packages(“plotrix”)来安装。

20.条形图
条形图表示矩形条中的数据,其长度与变量的值成比例。R使用barplot()函数来创建条形图。R可以在条形图中绘制垂直和水平条。 在条形图中,每个条可以被赋予不同的颜色。
在R中创建条形图的基本语法是 -barplot(H, xlab, ylab, main, names.arg, col)
R以下是使用的参数的描述 -H - 是包含条形图中使用的数值的向量或矩阵。xlab - 是x轴的标签。ylab - 是y轴的标签。main - 是条形图的标题。names.arg - 是在每个栏下显示的名称向量。col - 用于给图中的图条给出颜色。
条形图标签,标题和颜色可以通过添加更多参数来扩展条形图的功能。main参数用于添加标题。 col参数用于向条添加颜色。 args.name是与输入向量相同数量的值的向量,用于描述每个栏的含义。示例以下脚本将在当前R工作目录中创建并保存条形图片,如下所示 - setwd(“F:/worksp/R”)

#Create the data for the chart.
 H <- c(7,12,28,3,41)
 M <- c(“一月”,“二月”,“三月”,“四月”,“五月”)#Give the chart file a name.
 png(file = “barchart_months_revenue.png”)#Plot the bar chart.
 barplot(H,names.arg = M,xlab = “月份”,ylab = “收入量”,col = “blue”,
 main = “收入图表”,border = “red”)#Save the file.
 dev.off()

21.箱形图
盒形图是数据集中数据分布情况的衡量标准。它将数据集分为三个四分位数。盒形图表示数据集中的最小值,最大值,中值,第一四分位数和第四四分位数。 通过为每个数据集绘制箱形图,比较数据集中的数据分布也很有用。R中的盒形图通过使用boxplot()函数来创建。

在R中创建盒形图的基本语法是 -boxplot(x, data, notch, varwidth, names, main)
R以下是使用的参数的描述 - x - 是向量或公式。data - 是数据帧。notch - 是一个逻辑值,设置为TRUE可以画出一个缺口。varwidth - 是一个逻辑值。设置为true以绘制与样本大小成比例的框的宽度。names - 是将在每个箱形图下打印的组标签。main - 用于给图表标题。
我们使用R环境中已经存在的数据集 - mtcars来创建一个基本的盒形图。下面来看看mtcars数据集中的mpg和cyl列。

input <- mtcars[,c(‘mpg’,‘cyl’)]
 print(head(input))盒形图与凹口我们可以绘制带有凹槽的盒形图,以了解不同数据组的中位数如何相互匹配。以下脚本将为每个数据组创建一个带有凹槽的盒形图形。setwd(“F:/worksp/R”)
 Give the chart file a name.
 png(file = “boxplot_with_notch.png”)#Plot the chart.
 boxplot(mpg ~ cyl, data = mtcars,
 xlab = “气缸数”,
 ylab = “每加仑里程”,
 main = “里程数据”,
 notch = TRUE,
 varwidth = TRUE,
 col = c(“green”,“yellow”,“purple”),
 names = c(“高”,“中”,“低”)
 )
 #Save the file.
 dev.off()setwd(“F:/worksp/R”)
 #Give the chart file a name.
 png(file = “boxplot_with_notch.png”)#Plot the chart.
 boxplot(mpg ~ cyl, data = mtcars,
 xlab = “气缸数”,
 ylab = “每加仑里程”,
 main = “里程数据”,
 notch = TRUE,
 varwidth = TRUE,
 col = c(“green”,“yellow”,“purple”),
 names = c(“高”,“中”,“低”)
 )
 #Save the file.
 dev.off()

22.直方图
直方图表示一个变量范围内的值的频率。直方图类似于条形,但区别在于将值分组为连续范围。直方图中的每个栏表示该范围中存在的值的数量的高度。R使用hist()函数创建直方图。 该函数将一个向量作为输入,并使用一些更多的参数绘制直方图。
要指定X轴和Y轴允许的值的范围,可以使用xlim和ylim参数。每个条的宽度可以通过使用断点来决定。参考如下代码 - setwd(“F:/worksp/R”)

#Create data for the graph.
 v <- c(9,13,21,8,36,22,12,41,31,33,19)#Give the chart file a name.
 png(file = “histogram_lim_breaks.png”)#Create the histogram.
 hist(v, main=“直方图示例-2”, xlab = “重量”, ylab=“高度”,col = “green”,border = “red”, xlim = c(0,40), ylim = c(0,5),
 breaks = 5)#Save the file.
 dev.off()

23.线形图
线形图是通过在多个点之间绘制线段来连接一系列点所形成的图形。这些点按其坐标(通常是x坐标)的值排序。线形图通常用于识别数据趋势。R中的通过使用plot()函数来创建线形图。

在R中创建线形图的基本语法是 -plot(v,type,col,xlab,ylab)
R以下是使用的参数的描述 - v - 是包含数值的向量。type - 取值“p”表示仅绘制点,“l”表示仅绘制线条,“o”表示仅绘制点和线。xlab - 是x轴的标签。ylab - 是y轴的标签。main - 是图表的标题。col - 用于绘制点和线两种颜色。
多线条图表可以使用lines()函数在同一个图表上绘制多个直接。在绘制第一行之后,lines()函数可以使用附加向量作为输入来绘制图表中的第二行,参考以下代码 - setwd(“F:/worksp/R”)

#Create the data for the chart.
 v <- c(7,12,28,3,41)
 t <- c(14,7,6,19,3)#Give the chart file a name.
 png(file = “line_chart_2_lines.jpg”)#Plot the bar chart.
 plot(v,type = “o”,col = “red”, xlab = “月份”, ylab = “降雨量”,
 main = “降雨量图表”)lines(t, type = “o”, col = “blue”)
#Save the file.
 dev.off()

24.散点图
散点图显示了在笛卡尔平面绘制的多个点。每个点代表两个变量的值。在水平轴上选择一个变量,在垂直轴中选择另一个变量。简单散点图使用plot()函数来创建。
在R中创建散点图的基本语法是 -plot(x, y, main, xlab, ylab, xlim, ylim, axes)
R以下是使用的参数的描述 - x - 是数据集,其值是水平坐标。y - 是数据集,其值是垂直坐标。main - 是图表的标题。xlab - 是水平轴(y轴)上的标签。ylab - 是垂直轴(y轴)上的标签。xlim - 是用于绘制的x的值的极限。ylim - 是用于绘制的y值的极限。axes - 指示是否应在绘图上绘制两个轴。
散点图矩阵当我们有两个以上的变量,并且想要找到一个变量与其余变量之间的相关性时,我们使用散点图矩阵。可通过使用pairs()函数来创建散点图的矩阵。语法在R中创建散点图矩阵的基本语法是 -pairs(formula, data)
R以下是使用的参数的描述 -formula - 表示成对使用的一系列变量。data - 表示将从中采集变量的数据集。

25.平均数,中位数,众数

中计算平均值的基本语法是 -mean(x, trim = 0, na.rm = FALSE, …)
R以下是使用的参数的描述 - x - 是输入向量。trim - 用于从排序的向量的两端删除一些观测值。na.rm - 用于从输入向量中删除缺少的值。
.1.应用修剪选项当提供trim参数时,向量中的值进行排序,然后从计算平均值中删除所需数量的观察值。例如,当trim = 0.3时,每一端的3个值将从计算中删除以找到均值。在这种情况下,排序的向量为(-21,-5,2,3,42,7,8,12,18,54),从用于计算平均值的向量中从左边删除:(-21,-5,2)和从右边删除:(12,18,54)这几个值。

#Create a vector.
 x <- c(12,7,3,4.2,18,2,54,-21,8,-5)#Find Mean.
 result.mean <- mean(x,trim = 0.3)
 print(result.mean)


1.2.应用NA选项如果缺少值,则平均函数返回NA。要从计算中删除缺少的值,请使用na.rm = TRUE。 这意味着删除NA值。参考以下示例代码 -

中位数数据系列中的中间值被称为中位数。R中使用median()函数来计算中位数。语法R中计算位数的基本语法是 -median(x, na.rm = FALSE)
R以下是使用的参数的描述 - x - 是输入向量。na.rm - 用于从输入向量中删除缺少的值。

R没有标准的内置函数来计算众数。因此,我们将创建一个用户自定义函数来计算R中的数据集的众数。该函数将向量作为输入,并将众数值作为输出。# Create the function.
getmode <- function(v) {

uniqv <- unique(v)
 uniqv[which.max(tabulate(match(v, uniqv)))]
 }#Create the vector with numbers.
 v <- c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)#Calculate the mode using the user function.
 result <- getmode(v)
 print(result)#Create the vector with characters.
 charv <- c(“baidu.com”,“tmall.com”,“yiibai.com”,“qq.com”,“yiibai.com”)#Calculate the mode using the user function.
 result <- getmode(charv)
 print(result)

26.线性回归
一个简单的线性回归例子:是否能根据一个人的已知身高来预测人的体重。要做到这一点,我们需要有一个人的身高和体重之间的关系。创建线性回归关系的步骤是 -进行收集高度和相应重量观测值样本的实验。使用R中的lm()函数创建关系模型。从所创建的模型中找到系数,并使用这些系数创建数学方程。获取关系模型的摘要,以了解预测中的平均误差(也称为残差)。为了预测新人的体重,请使用R中的predict()函数。
predict()函数语法线性回归中的predict()的基本语法是 -predict(object, newdata)
R以下是使用的参数的描述 - object - 是已经使用lm()函数创建的公式。newdata - 是包含预测变量的新值的向量

#The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
#The resposne vector.
 y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
 #Apply the lm() function.
 relation <- lm(y~x)#Find weight of a person with height 170.
 a <- data.frame(x = 170)
 result <- predict(relation,a)
以图形方式可视化线性回归
 plot(y,x,col = “blue”,main = “身高和体重回归”,
 abline(lm(x~y)),cex = 1.3,pch = 16,xlab = “体重(Kg)”,ylab = “身高(cm)”)

27.多元回归
lm()函数该函数创建预测变量与响应变量之间的关系模型。语法lm()函数在多元回归中的基本语法是 -lm(y ~ x1+x2+x3…,data)
R以下是使用的参数的描述 - formula - 即:y ~ x1+x2+x3…是呈现响应变量和预测变量之间关系的符号。data - 是应用公式的向量。

head(utils)
 head()所属R语言包:utils
 Return the First or Last Part of an Object