新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
R语言数据对象与运算
创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为江川企业提供专业的成都网站设计、成都网站建设,江川网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
R语言数据对象与运算 笔记整理
2.1 数据对象及类型
R语言创建和控制的实体被称为对象(object)
ls()命令来查看当前系统里的数据对象
R对象的名称必须以一个英文字母打头,并由一串大小写字母、数字或钟点组成
注意:R区分大小写
不要用R的内置函数名称作为数据对象的名称,如c、length等
2.2 数据对象类型
R语言的对象包括
数值型(numeric):实数, 可写成整数(integers)、小数(decimal fractions)、科学记数(scientific notation)
逻辑型(logical):T(true)或F(FALSE)
字符型(character):夹在" "或之间
复数型(complex):形如a+bi
原味型(raw):以二进制形式保存数据
缺省型(missing value):有些统计资料是不完整的,当一个元素或值在统计的时候是“不可得到(not available)”或“缺失值(missing value)”的时候,相关位置可能会被保留并赋予一个特定的NA(not available)值,任何NA的运算结果都是NA。
辨别和转换数据对象类型的函数:
辨别 转换
character is.character() as,character()
complex
double
integer
logical
NA
numeric
2.3 数据对象构造
R语言里的数据对象主要有六种构造:向量(vector)、矩阵(matrix)、数组(array)、列表(list)、数据框(data frames)、因子(factor)
2.3.1 向量(vector)是由有相同基本类型元素组成的序列,相当于一维数组
5个数值组成的向量x,这是一个用函数c()完成的赋值语句,这里c()可以有任意多个参数,而它输出的值则是一个把这些参数首尾相连形成的一个向量
R的赋值符号除了“-”外,还有"-""="
例如:
c(1,3,5,7,9) - y
y
[1] 2 5 8 3
z = c(1,3,5,7,9)
z
[1] 1 3 5 7 9
assign()函数对向量进行赋值
length():可返回向量的长度
mode()可返回向量的数据类型
正则序列 用 “:”符号,可产生有规律的正则序列(: 的运算级别最高)
函数seq()产生有规律的各种序列
seq(from,to ,by) from 给序列的起始值,to表示序列的终止值,by表示步长(by 省略时,表示步长值为1)
seq(1,10,2)
[1] 1 3 5 7 9
seq(1,10)
[1] 1 2 3 4 5 6 7 8 9 10
有时关注的是数列的长度,利用句法:seq(下界,by=,length=)
seq(1,by=2,length=10)
[1] 1 3 5 7 9 11 13 15 17 19
rep(x,times,……)x表示要重复的对象,times表示重复的次数
rep(c(1,3),4)
[1] 1 3 1 3 1 3 1 3
rep(c(1,3),each=4)
[1] 1 1 1 1 3 3 3 3
对每个元素进行重复;
R中的内置函数:
mean()来示向量的均值
median()求是位数
var()求方差
sd()求标准差
sort()对向量排序
rev()将向量按原方向的反方向排列
rank()给求出向量的秩
prod()求向量连乘积
append()为向量添加元素
对向量运算常见函数表
函数 用途
sum() 求和
max() 求最大值
min() 求最小值
range() 求极差(全矩)
mean() 求均值
median 求中位数
var() 求方差
sd() 求标准差
sort() 排序
rev() 反排序
rank() 求秩
append() 添加
replace() 替换
match() 匹配
pmatch() 部分匹配
all() 判断所有
any() 判断部分
prod() 积
2.3.2 矩阵
矩阵(matrix)是将数据用行和列排列的长方形表格,它是二维的数组,其单元必须是相同的数据类型,通常用列来表示不同的变量,用行表示各个对象。
其句法是:
matrix(data=NA,ncol=1,byrow-=FALSE,dimnames=NULL)
data是必须的,其它几个选择参数。
nrow表示矩阵的行数
ncol表示矩阵的列数
byrow默认为FALSE,表示矩阵按列排列,如设置为T,表示按行排列;
dimnames可更改矩阵行列名字
diag()函数生成对角矩阵
diag()这个函数比较特别,当数据是向量时则生成对角矩阵,但当数据是矩阵时,则返回对角元素
也可用函数diag()生成单位矩阵
当我们生成了某个矩阵后,若要访问矩阵的某个元素或某行(列),可以利用形如A[i,j]的形式得到相应的索引矩阵
矩阵可进行相应的加减乘除运算,但运算过程中要注意行数和列数的限制条件
R里A*B并不是表示矩阵相乘,只表示矩阵对应的元素相乘
矩阵相乘应用A%*%B
dim()返回矩阵的行数和列数
nrow()返回矩阵的行数
ncol()返回矩阵的列数
solve()返回矩阵的逆矩阵
对矩阵运算的常见函数
函数 用途
as.matrix() 把非矩阵的转换成矩阵
is.matrix() 辨别是否矩阵
diag() 返回对角元素或生成对角矩阵
eigen() 求特征值和特征向量
solve() 求逆矩阵
chol() Choleski分解
svd() 奇异值分解
qr() QR分解
det() 求行列式
dim() 返回行列数
t() 矩阵转置
apply() 对矩阵应用函数
R语言还提供了专门针对矩阵的行或列计算的函数
如 colSUms()对矩阵各列求和 colMeans()求矩阵各列的均值
类似的有 rowSums()rowMeans()
更一般的方法:
apply()函数来对各行各列进行运算
句法是:apply(X,MARGIN,FUN,……)
X表示要处理的数据
MARGIN表示函数作用的范围
取1表示对行运用函数
取2表示对列运用函数
FUN表示要运用的函数
rbind()、cbind()将两个或两个以上的矩阵合并起来
rbind()表示按行合并,cbind()则表示按列合并
2.3.3 数组
数组(array)可以看作是带有多个下标的类型相同的元素的集合。
数组的生成函数是array(),其句法是
array(data=NA,dim=length(data),dimnames-NULL)
data表示数据,可以为空
dim 表示维数
dimnames可以更改数组难度的名称
2.3.4 列表
向量、矩阵和的单元必须是同一类型的数据,若一个数据对象需要含有不同的数据类型,可采用列表(list)这种数据对象的形式。
列表是一个对象的有序集合构成的对象,列表中包含的对象又称为它的分量(components),分量可以是不同的模式或(和)类型
语法式为:list (变量1=分量1,变量2=分量2,……)
若要访问列表的某一成分,可以用LST[[1]],LST[[2]]的形式访问
因分量可以被命名,故可以在列表名称后加$符号,再写上成分名称来访问列表分量
函数length()、mode()、names()可以分别返回列表的长度(分量的数目)、数据类型、列表里成分的名字
2.3.5 数据框
数据框(data frame)是一种矩阵形式的数据,但数据框中各列可以是不同类型的数据。数据框每列是一个变量,每行是一个观测 。
对可能列入数据框中的列表有如下的一些限制:
1.分量必须是向量(数值,字符,逻辑),因子,数值矩阵,列表或者其他数据框。
2.矩阵,列表和数据框为新的数据框提供了尽可能多的变量,因为它们各自拥有列、元素或者变量。
3.数值向量、逻辑值、因子保持原有格式,而字符向量会被强制转换成因子并且它的水平就是向量中出现的独立值。
4.在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数。
R中用函数data.frame()生成数据框,其句法是:data.frame(data1,data2,……)
数据框的列名默认为变量名,也可对列名进行重新命名
也可以对数据框的行名进行修改
2.3.6 因子和有序因子
分类型数据经常要把数据分成不同的水平或因子(factor)
生成因子的命令是factor(),其句法是:factor(data,levels,labels,……)
其中data表示数据
levels是因子水平向量
labels是因子的标签向量
levels,labels是备选项,可以不选
若上面的每个因子并不表示因子的大小,要表达因子之间有大小顺序(考虑因子之间的顺序),则可以用 ordered()函数产生
2.4 数据的录入及编辑
c函数:c函数是把各个值联成一个向量或列表,可以形成数值型向量、字符型向量或其它类型向量
scan函数:功能类似于c函数,实际上是一种键盘输入数据函数。当输入scan(),然后按回车键,这时将等待输入数据,数据之间只要空格分开即可(c函数要用逗号分开)。输入完数据,再按回车键,这时数据录入完毕。
scan函数还可以读入外部文本文件,若现有一个文本文件,data.txt,读入这个文件的命令是: x=scan(file="dat.txt")
若原文件的数据之间有逗号等分隔符,用scan读入应该去掉这些分隔符,其命令是: x=scan(file="dat.txt",sep=",")
编辑数据
data.entry命令
xx原先未被定义,现在赋予其一个空值,这时会出现一个电子表格界面,等待输入数据: data.entry(xx=c(NA))
当电子表格关闭后,数据会自动保存
edit命令用来编辑函数,也可用来编辑数据,但不会自动保存
fix函数与edit类似,但它可以自动保存
从外部文件读入数据
从文本文件读取:
s1=read.table("student.txt")
s1
V1 V2 V3
1 class sex score
2 1 女 80
3 1 男 85
4 2 男 92
5 2 女 76
6 3 女 61
7 3 女 95
8 3 男 83
读入表格数据的命令是:read.table
忽略掉标签而直接使用默认的行标签
s2=read.table("student.txt",header=T)
s2
class sex score
1 1 女 80
2 1 男 85
3 2 男 92
4 2 女 76
5 3 女 61
6 3 女 95
7 3 男 83
从网络读入数据
url可以从网页上读入正确格式的数据,要借助read.table函数
address=
/sample.txt
read.table(file=url(address))
读入其他格式的数据库
要读入其他格式的数据库,必须先安装"foreign"模块,它不属于R的8个内置模块,需在使用前安装。 library(foreign)
SAS:R只能诗篇SAS Transport format(XPORT)文件,需要把普通的SAS数据文件(.ssd和.sas7bdat)转换成Transport format(XPORT)文件,再用命令:read.xport()
SPSS数据库:read.spss()可读入SPSS数据文件
Epi info数据库:
要给数据集一个名字,则是;read.epiinfo("文件名.rec")-名称
Stata数据库:
R可读入Stata5,6,7的数据库
读入数据文件后,使用数据集名$变量名,即可使用各个变量
read.dta(“文件名.dta”)
读入数据文件后,使用数据集名$变量名,即可使用各个变量。
mean(data$age)
便是计算数据集 data中的变量age的均数。
2.5 函数、循环与条件表达式
2.5.1 编写函数
句法是:
函数名 = function (参数1,参数2…)
{
函数体
函数返回值
}
对于这类只有一个算术式的简单函数,也要不要{}
mean(data$age)
便是计算数据集 data中的变量age的均数。
若不使用圆括号,直接输入函数名,按回车键将显示函数的定义式:
单参数:使函数个性化,可使用单参数,函数将会根据参数的不同,返回值不同
welcome.sb = function(names) print(paste("welcome",names,"to
use R"))
welcome.sb("Mr fang")
[1] "welcome Mr fang to use R"
welcome.sb("Mr Wang")
[1] "welcome Mr Wang to use R"
默认参数:即不输入任何参数
函数的默认参数
welcome.sb=function(names="Mr fang")print(paste("welcome",
names,"to use R"))
welcome.sb()
[1] "welcome Mr fang to use R"
当函数体的表达式超过一个时,要用{}封起来
2.5.2 for循环
for循环的句法是:
for (变量 in取值向量) {
表达式…
}
r语言中的c()函数,用来把一些数据组合成向量。
如:x-c(1,2)
把1,2两个数,组合成向量(1,2),并存入变量x。
Vectors 向量【当你想用多个元素创建向量时,你应该使用 c() 函数,这意味着将元素组合成一个向量。】
# c函数用来将元素组成为一个向量
v - c('a', 'b','c')
print(v)
# 输出结果即为元素的值,可以看出,vector类型里面只能有一种元素
print(class(v))
1
2
3
4
5
1
2
3
4
5
1] “a” “b” “c”
[1] “character”
那么问题来了,假如我就是想什么东西都往向量里面塞呢,这种做法并不会引发报错,但是R会暗中把那些乱七八糟的东西全部转换为一种类型。比如在下面这个例子,R就取了vector的第一个元素,将其转换为了character类型。
在这里插入图片描述
Lists 列表【列表是一个 R 对象,它可以在其中包含许多不同类型的元素,如向量,函数甚至其中的另一个列表。】
# 列表里面就什么都可以塞
l - list(1,"666",c(2,3,4))
print(l)
print(class(l))
1
2
3
4
1
2
3
4
[[1]]
[1] 1
[[2]]
[1] “666”
[[3]]
[1] 2 3 4
[1] “list”
Matrices 矩阵【矩阵是二维矩形数据集。 它可以使用矩阵函数的向量输入创建。】
# 第一个参数指的是矩阵中的元素内容,第二三个参数指的是矩阵的行和列,最后一个参数指的是按行排列还是按列排列
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = FALSE)
print(M)
print(class(M))
1
2
3
4
5
6
1
2
3
4
5
6
在这里插入图片描述
Arrays 数组【虽然矩阵被限制为二维,但阵列可以具有任何数量的维度。 数组函数使用一个 dim 属性创建所需的维数。】
a - array(c(1,2,3,4),dim = c(3,3,2))
print(a)
print(class(a))
print(a[2,2,1])
1
2
3
4
1
2
3
4
在这里插入图片描述
Factors 因子【因子是使用向量创建的 r 对象。 它将向量与向量中元素的不同值一起存储为标签。 标签总是字符,不管它在输入向量中是数字还是字符或布尔等。 它们在统计建模中非常有用。】
color - c('green','green','yellow','red','red','red','green')
f - factor(color)
print(color)
print(f)
print(nlevels(f))
print(class(s))
1
2
3
4
5
6
1
2
3
4
5
6
在这里插入图片描述
Data Frames 数据帧【数据帧是表格数据对象。 与数据帧中的矩阵不同,每列可以包含不同的数据模式。 第一列可以是数字,而第二列可以是字符,第三列可以是逻辑的。 它是等长度的向量的列表。】
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)
print(class(BMI))
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
在这里插入图片描述
参考网址:w3c
打开CSDN,阅读体验更佳
R语言基础之第六部分 分类(史上最全含ddply、aggregate、split、b...
R语言基础之第六部分 分类(史上最全含ddply、aggregate、split、by) 数据: 某市2014年-2018年空气质量指数日数据,需要按年分类计算每年 warm值为1和 0的均值。 数据长这个样子: 目标:求下列的均值 一、数据处理(提取年月) 首先需要...
R语言:数据类型及属性_woooooood的博客
R语言:数据类型及属性 1.数据类型 R语言可以处理的数据类型主要有6种:数值型、整数型、字符型、复数型、逻辑型和原生型 若输入的数据为一个数字,则数据类型为数值型(numeric),若想数据类型为整数(integer),则需要在所赋值后加“L”...
二、数据集与数据类型【R与统计】
引言 按照要求格式来创建含有研究信息的数据集是任何数据分析的第一步。在R中,这个任务包括以下两步: 选择一种数据结构来存储数据; 将数据输入或导入到该数据结构中 因此,本文将先叙述了R中用于存储数据的多种结构,具体为向量、因子、矩阵、数据框以及列表的用法。熟悉这些数据结构和访问其中元素的表述方法将十分有助于了解R的工作方式,便于后续的编程。 我将在下一篇博客介绍一些在R中导入数据的可行方法。手工输入数据当然可以,除此之外,我们也可以从外部源导入数据。数据源可以是文本文件、电子表格、统计软件和各类数据库管
继续访问
R语言中的数据集
R语言中的数据存储形式主要有以下几种方式 数组,向量,矩阵,数据框,列表 R语言中的可以处理的数据类型有以下几种方式 数值类型,字符类型,逻辑类型,原声类型(二进制类型),复数类型 数值类型 包括 实例标示,日期类型 字符类型 包括 标称变量,序数变量 R语言针对不同的数据类型处理的方式是不同的 一、向量(每一个向量中的元素都是相同的数据类型) a b c
继续访问
最新发布 R语言基础数据类型
R语言主要有三种基本的数据类型,分别是数值型(Numeric)、整型(integer)以及字符型(character)。
继续访问
R语言数据类型基础1 数值型、逻辑型与文本型
基础的R语言数据类型操作,包括了字符串、数值向量以及逻辑向量的一点简单介绍
继续访问
R语言----对数据进行分类汇总(GROUP_BY使用)
library(dplyr) ###加载dplyr模块 A-read.csv("f:\\TEST\\TDD.csv") ####加载数据 D=data.frame(A) ##### A1-group_by(D,Date_ID) ####分组项 A2-summarise(A1,cells=n(), ####统计个数 RRC_ch...
继续访问
R语言--R语言数据类型(2)
一、矩阵与数组 创建 # 1.1 利用array函数,创建二维数组m1,每一行记录不同人(A,B,C)的各科成绩(math,english,physics),成绩请随意输入(要求每行至少有一个90分以上,每一列至少有一个60分以下) print('----1.1') m1 - array(c(95,40,80,55,92,98,86,93,55), dim = c(3,3), dimnames = list(c('A','B','C'),
继续访问
R语言之对象和类
理解什么是对象R是一种基于对象(object)的语言,所以我们在R语言中看到的一切事物都是对象,向量是对象,函数是对象,图形是对象。简单说,我们可以把整个R看成是一个储物室,它的内容是由内在不同的储物盒(对象)组成, 每个盒子有不同属性(attribute), 最重要的一种属性是它的类(class).查看、删除ls:list的缩写,我们要查看物品,所以要先列出目录。
继续访问
R语言中的类和对象
#####类和对象##### #之前学习的字符向量、数值向量、数据框、列表以及数组都是一个类。 #用class函数定义类 teams-c("PHI","NYM","FLA","ATL","WSN") w-c(92,89,94,72,59) l-c(70,73,77,90,102) nleast-data.frame(teams,w,l) #定义teams类 class(teams) cla
继续访问
R语言数据类型
文章目录基本概念向量字符串矩阵列表数组因子数据框 基本概念 R 语言中的最基本数据类型主要有三种:数字,逻辑,文本 逻辑类型在许多其他编程语言中常称为布尔型(Boolean),常量值只有 TRUE和FALSE。 注意:R 语言区分大小写,true 或 True 不能代表 TRUE。 最直观的数据类型就是文本类型。文本就是其它语言中常出现的字符串(String),常量用双引号包含。 在 R语言中,文本常量既可以用单引号包含,也可以用双引号包含,例如: 按对象类型来分是以下6种:向量(vector),列表(
继续访问
R语言分类汇总
R语言分类汇总 ##加载包 library(dplyr) ##函数 group_by 制定数据集 data 中针对 type 变量进行分类汇总 grou - group_by(data,type) ##summarise函数计算分类结果——sd 标准差,还可计算其他类,分类汇总 type_sd - summarise(grou ,sd(range ,na.rm = T)) dat...
继续访问
热门推荐 R语言:排序、筛选以及分类汇总操作
在Excel中我们可以很方便的对数据进行排序、筛选、分类汇总等基本操作,R语言中没有这种傻瓜式的一键操作,如何才能完成这种操作?一、排序1、单变量序列排序单变量序列的排序常用到rank、sort和order函数。给一个例子: a - c(3, 1, 5) rank(a) [1] 2 1 3 sort(a) [1] 1 3 5 order(a...
继续访问
R语言 查看与转换数据类型
数据对象类型 R语言的对象常见的数据类型有:数值型、字符型、逻辑型、整数型、复数型等。此外,也可能是缺省值(NA) 数据对象类型及其判别和转化函数 类型 中文释义 示例 辨别 转换 numeric 数值型 2、-3、4.5 is.numeric() as.numeric() character 字符型 “ZhangHenghua” is.character() as.chara...
继续访问
R语言的数据类型
一、数据类型 概括来说,R可以识别六种基本的数据类型,分别是,双整型(double)、整型(integer)、字符型(character)、逻辑型(logical)、复数类型(complex)以及原始类型(raw). 1.双整型(double) 储存普通数值型数据,可正可负,可大可小,可含小数可不含 R中键入的任何一个数值都默认以double型存储 想知道某个对象是什么类型,可以使用typeof() 函数进行查看 在数据科学里,它更常被称为数值型(numeric) 2.整型(integer) 顾名思义,只能
继续访问
R语言——数据类型详解
R语言——数据类型详解 R语言支持的数据类型 数值型 整数型 逻辑型 字符型 复数型 原生型 R语言的数据对象类型包括 向量:一个向量只能有一种数据类型 矩阵:一个矩阵只能有一种数据类型 数组:一个数组只能有一种数据类型 数据框:不同的列允许不同的数据类型 因子:一个因子只能有一种数据类型 列表:允许不同的数据类型 如上图所示,标量、向量、矩阵和数组可以按同一类型来理解,这四种类型要求对象包含的数据均为同一类型,数组是多维度的一串数据,向量是维度为1的数组,标量是单元素的向量,矩阵是维度为2的数
继续访问
R语言自用笔记:复数
介绍了R语言中虚数的表示、相关函数
继续访问
[R语言]2. R语言中的数据类型和数据结构
R语言中数据类型和数据结构是两种不同的概念,初学者经常容易搞混,因此有必要对这两个概念进行详细说明。
继续访问
R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames
R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames 通常,在使用任何编程语言进行编程时,都需要使用各种变量来存储各种信息。变量只不过是用来存储值的内存位置或者区间。这意味着,当我们创建一个变量时,系统在内存中保留了一些空间。 我们可能喜欢存储各种数据类型的信息,如字符、宽字符、整数、浮点、双浮点、布尔等。根据变量的数据类型,操作系统进行内存的分配并
继续访问
R语言 常用数据类型
一般来讲,R语言中有三种数据结构,第一种是数组,第二种是列表,第三种是数据框。第一种: 数组(包括向量和矩阵)。数组可以用来储存数值型(numeric)、逻辑型(logical)和字符型(character)三种类型的数据。例如:储存字符型数据 x = array(rep("a",6),dim=c(2,3)) x [,1] [,2] [,3] [1,] "a" "a" "a"
c本身在这里应该是“combine”的首字母,用于合并一系列数字从而形成向量/数列。