数据分析利器之R的常规操作

R语言实验 实验1 R的基本知识-1 # 实验1 R的基本知识-1 # 1.输出无理数e的(近似)值; exp(1) # 2.求 1+2+…+100 的和; sum(1:100) # 3.求 1+1/2+…+1/15 的(近似)值; sum(1/(1:15)) # 4.生成规则序列s1:1,1,1,2,2,2,…,6,6,6; s1 = rep(1:6,each=3);s1 # 5.生成规则序列s2,使1,2,3,4各重复5,2,1,3次; s2=rep(1:4,c(5,2,1,3));s2 # 将七名学生 阅读详情

R的使用

—上课笔记,以及自己的补充。

1.2 R的数据类型mode

数值型、字符型、逻辑型、复数型(略)等

1.2.1 数值型

X<-3+3; X          #“<-”为赋值符,“;”用于间隔一行中的命令,结果同上句
assign("X",3+3); X = 3+3; 3+3-> X  #赋值的其他方法,一般不用
Wing <- c(59, 55, 53.5, 55, 52.5, 57.5, 53, 55)   #输入向量,向量是R的重要数据结构(见#1.3)
mode(Wing); length(Wing)  #查看对象的两个内在属性:类型与长度
typeof(Wing)          #查看类型,比mode分得更细

1.2.2 字符型

date() 提取当前系统时间.

与之类似的是: Sys.time()

paste("Today is", date())  #拼接字符串;
labs<-paste("X", 1:6, sep = "_"); labs
Sys.time() # "2020-05-17 20:03:18 CST"
format(Sys.time(), "%a %b %d %H:%M:%S %Y") #"周日 5月 17 20:02:18 2020"

paste (…, sep = " ", collapse = NULL)
paste0(…, collapse = NULL) 没有分隔符

功能:转换为字符后,拼接成向量

#当传入的是单个向量时,paste(),paste0(),as.character() 结果一样
paste0(1:12)
paste(1:12)        # same
as.character(1:12) # same

(nth <- paste(1:12, c("st", "nd", "rd", rep("th", 9))))
# [1] "1 st"  "2 nd"  "3 rd"  "4 th"  "5 th"  "6 th"  "7 th"  "8 th"  "9 th"  "10 th" "11 th" "12 th"
(nth <- paste0(1:12, c("st", "nd", "rd", rep("th", 9)))) #没有分隔符
# [1] "1st"  "2nd"  "3rd"  "4th"  "5th"  "6th"  "7th"  "8th"  "9th"  "10th" "11th" "12th"

# 注意在进行字符串拼接的时候,循环根据最长字符串来定
paste0(1:10,c("a","b","c")) # [1] "1a"  "2b"  "3c"  "4a"  "5b"  "6c"  "7a"  "8b"  "9c"  "10a"

#可设置参数sep,更改字符间的分隔符
paste(month.abb[1:5],c(1:5),sep = "-->")
#[1] "Jan-->1" "Feb-->2" "Mar-->3" "Apr-->4" "May-->5"

#要将输出折叠为单个字符串,只需设置collapse 
paste0(nth, collapse = ", ")
#[1] "1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th, 11th, 12th"

#若要拼接的对象长度为1,选择sep参数,而非collapse
paste("1st", "2nd", "3rd", collapse = ", ") # probably not what you wanted.  "1st 2nd 3rd"
paste("1st", "2nd", "3rd", sep = ", ") #"1st, 2nd, 3rd"

#还可以同时使用参数 sep, collapse
paste(month.abb, nth, sep = ": ", collapse = "; ") 


1.2.3 逻辑型

运算符描述
x&&y标量的逻辑“与”运算
x||y标量的逻辑“或”运算
x & y向量的逻辑“与”运算(x、y以及运算结果都是向量)
x|y向量的逻辑“或”运算(x、y以及运算结果都是向量)
!x逻辑非
x %/% y整除,实际上得到的是商
x ^ y幂
x %% y模运算,实际上是取余数
Wing <- c(59, 55, 53.5, 55, 52.5, 57.5, 53, 55)
x <- c(T,F,TRUE); x        #T即TRUE,F即FALSE,注意一定要大写!
x <- Wing>55; x  #结果为逻辑向量TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE

#逻辑运算符:<,<=,>,>=,==,!=,&,|,!
x <- c(1,1,0)
y <- c(0,1,0)
x|y #或
x&y #与
!x  #非

#注意若是对向量使用 标量的运算符,则只会对第一个分量进行判断
x&&y
x||y

5%%2 #1
5%%3 #2

5 %/% 2
5 %/% 3

all(x)   #判断逻辑向量中是否都为TURE
any(x)   #判断逻辑向量中是否存在TURE

1.2.4 缺失型

NA(缺失),NAN(不确定)Not a number,INF(无穷)

x<-c(0/1, 0/0, 1/0, NA); x
is.na(x)   #注意0/0(NAN)在判断时也被认为是NA。类似还有is.nan(),is.finite(),is.infinite()
is.nan(x)
is.finite(x)
is.infinite(x)

1.2.5 表达式

expression

f<- expression(cos(pi*x+y^2+exp(y)))  #输入二元函数(表达式)
D(f,"y")    #求(偏)导数
f<- expression(x^3)
D(f,"x")

length(ex1 <- expression(1 + 0:9)) # 1
ex1
eval(ex1) # 1:10

length(ex3 <- expression(u, 2, u + 0:9)) # 3
mode(ex3 [3])   # expression
mode(ex3[[3]])  # call
sapply(ex3, mode  ) #  name  numeric  call
sapply(ex3, typeof) # symbol  double  language
rm(ex3)

1.2.6 函数

1.2.6 数据类型的判断和转换

f <- function(x) { 1/x^2 }   #输入一元函数
integrate(f, 1, 2)    #求一元积分
integrate(f, 1, Inf)  #求无穷积分


is.numeric(TRUE)
as.numeric( Wing>55 )  #将逻辑型强制转换为数值型,但x本身不变
T+2       #R将根据运算需要自动完成类型转换,结果为1+2=3

1.3 R的数据构成class

向量、数组、矩阵、列表、数据框等

1.3.1 向量

  1. 向量的创建与索引
Wing <- c(59, 55, 53.5, 55, 52.5, 57.5, 53, 55)  #输入数据向量
#访问向量中的元素:
Wing[1]      #查看第1个值,注意这里是方括号!下同。
Wing[c(1,3)] #查看第1,3个值
Wing[1:4]    #查看前4个值,1:4表示序列1,2,3,4
Wing[-3]     #查看除了第3个值以外的其它值
Wing[Wing>55] #查看Wing中大于55的元素,注意[]内可以是逻辑向量
X<-Wing; X[X>55]=55; X   #将大于55的元素设置成55,这里为不改变Wing的值,另外使用了X

#数值向量的计算
Wing^2       #各元素加平方得到新的向量
sum(Wing)    #求和,另有range,max,min,mean,median,var,sd等
exp(Wing)    #计算以e为底的指数
which.min(Wing)  #返回最小值的索引 5

#排序
sort(Wing)       #向量排序,默认升序
sort.list(Wing)  #下标顺序——按升序排列的元素在原向量中的下标,同order(Wing) 
sort(Wing, decreasing = TRUE)
order(Wing)      #下标顺序——按升序排列的元素在原向量中的下标. 返回的是索引
rank(Wing)       #按升序排列的元素所在的排名,注意ties.method参数

注: rank与order都与排序有关,且结果往往都是1:n的一种排列,极易混淆。
rank只比较元素在向量中的大小,而order要同时考察大小和出现的先后次序,(返回排序后元素在原向量的下标)。正因order返回值是排序向量之下标,故A[order(A)]将A排序,而B(order(A))将B按A的大小排序(联动排序).

关于rank函数,rank,默认小的值,排名靠前.

rank(x, na.last = TRUE, ties.method = c(“average”, “first”, “last”, “random”, “max”, “min”))

参数ties.method处理元素值相等时的情况.

x <- c(1,2,3,2,1,0) 
rank(-x) #rank(-x)大的值排名靠前,结果前和average情况一样,ties.method默认为 average
rank(-x,ties.method = "max")		#5 3 1 3 5 6	取排名值大的
rank(-x,ties.method = "min")		#4 2 1 2 4 6	取排名值大的
rank(-x,ties.method = "first")		#4 2 1 3 5 6	位置靠前的大
rank(-x,ties.method = "last")		#5 3 1 2 4 6	位置靠后的大
rank(-x,ties.method = "average")	#4.5 2.5 1.0 2.5 4.5 6.0 平均
rank(-x,ties.method = "random")		#5 2 1 3 4 6	随机
  1. 向量的生成方式
  • 用vector()生成向量——可事先定义变量长度,在做循环运算的时候有用.
  • 生成规则序列——":"、“seq()”、“rep()”
M <- vector(length = 3); M    #注意参数名用法. 默认生成的是逻辑向量,False,长度为3
M[1] <- 59; M[2] <- 55; M[3] <- 53.5; M

1:4
seq(from=2, to=8, by=2)  #by间隔
seq(2,8,length.out = 5)	 #length.out序列长度 参数可简写为 len=5,或length=5
#生成重复序列
rep(1:4, each=2, len=10)  #1:4每个重复2次,总长10         rep---repeat
rep(1:4, each=2, times=3) #1:4每个重复2次,整个片断再重复3次
rep(1:4, c(4,3,2,1))      #1重复4次,2重复3次……
rep(1:4, 3)               #1:4重复3次,3相当于times=3
rep(1:4, each = 2, len = 4)    # first 4 only.
rep(1:4, each = 2, len = 10)   # 8 integers plus two recycled 1's.

#给向量中元素加名
ages <- c(Li=33, Zhang=29, Liu=18);ages  #方式一:创建时直接加名字
ages["Zhang"]      #相当于ages[2]
ages <- c(33,29,18); 
names(ages) <- c("Li","Zhang","Liu");    #方式二:创建后,再用names加名
ages["Zhang"]  #结果同上

attributes(ages)   #列出除两个内在属性(类型、长度)以外的其他属性
attr(ages,"names") #列出指定的属性

class(ages)        #对于向量,结果为其中元素的类型

#生成序列可能用到的常量
LETTERS       #26个大写字母
letters       #26个小写字母
month.abb     #12个月份的三字母缩写
month.name    #12个月份的全称

1.3.2 数组、矩阵

array()/matrix() 数组是带多个下标的同类型元素的集合,矩阵是2维数组

B<-c(1:8, 10)
is.vector(B);  is.array(B)  #B是向量、非数组
dim(B) #向量没有维度 NULL

dim(B)<-9;  B #若给向量赋予维度,向量就转化成了数组
is.vector(B);  is.array(B)  #B化为了1维数组
mode(B);  class(B)          #查看B的数据类型与构成:numeric,array

dim(B)<-c(3,3);  B          
is.array(B);  is.matrix(B)  #B化为了3*3的2维数组,即矩阵
mode(B);  class(B)          #查看B的数据类型与构成:numeric,matrix

#数值矩阵的运算
dim(B); nrow(B); ncol(B)   #返回矩阵维数、行数和列数
det(B)   #求行列式
t(B)     #求矩阵转置
solve(B) #求逆  B %*% solve(B)=I_3  还可以解线性方程组Ax=B,x=solve(A,B)
eigen(B) #求特征值与特征向量,eigen(B)$values,eigen(B)$vectors分别提取特征值/向量
B%*%A    #矩阵的乘法,注意,不是B*A,后者要求对应元素相乘
#验证Bx=lambda*x
(B %*% eigen(B)$vectors[,1]) & t((eigen(B)$values[1] %*% eigen(B)$vectors[,1]))

#简单的统计分析
sum(B); mean(B)          #求矩阵元素之和、均值
rowSums(B); colSums(B)   #逐行求和、逐列求和
rowMeans(B); colMeans(B) #逐行求均值、逐列求均值

apply(B,1,sum)           #逐行求和,同rowSums(B),1表示对行计算
apply(B,2,mean)          #逐列求均值,同colMeans(B),2表示对列计算
apply(B,c(1,2),sqrt)     #逐元素开根,同sqrt(B)

注:一定要注意矩阵的乘法,用的是 %*%

#访问矩阵中部分元素
B<-c(1:8, 10)
B[,1]       #第一列
B[1,]       #第一行
B[1,1]      #第一行、第一列
B[,2:3]     #第二、三列
B[,-3]      #除第三列外的元素
B[,c(-1,-3)] #除第一、三列外的元素

#给矩阵行、列加名
rownames(B) <- c("one", "two", "three")          #设置行名
colnames(B) <- c("First", "Second", "Third"); B  #设置列名

#上两句还可以在定义matrix时通过参数dimnames来设定 需要以列表的方式传入
B <- matrix(c(1:8,10),nrow = 3,ncol = 3,
            dimnames = list(c("one", "two", "three"),
                            c("First", "Second", "Third")));B

#将矩阵拉直成向量
as.vector(B)  #矩阵元素按列拉直成向量
dim(B)<-9     #效果同上

#将多个向量按列/行捆绑cbind/rbind,作成矩阵
Z <- cbind(Wing, Bone, Head, Weight); Z   #按列捆绑,注意有列名
class(Z) # "matrix"
rbind(1:3, 4:6, c(7,8,10)) #多个等长向量捆绑成矩阵
cbind(1:4, 1:2)

1.3.3 列表

列表是一种特别的对象集合,它可以由不同类型、不同构成的对象(元素)构造而成
定义格式:list(name_1=object_1, …, name_m=object_m)

#列表的定义、访问和修改
Lst <- list(    #注意,一个命令可以写多行,在console窗口亦可
  name="Fred", 
  wife="Mary", 
  no.children=3, 
  child.ages=c(4,7,9)
); Lst
class(Lst)  #该对象为list类
is.list(Lst)#判断是否为list类,结果为真
Lst$name    #访问name对象,同Lst[[1]]或Lst[["name"]]。注意有别于单括号(返回子列表)
Lst$income <- c(1980, 1600)  #要修改或增加列表中的对象,直接赋值即可
Lst$income <- NULL           #要删除列表中的对象,可将其赋为NULL,注意区别于NA
c(Lst,list(income=c(1980, 1600)))  #多个列表连接得到新列表,注意未改变Lst本身的值

#查看列表的基本信息
names(Lst)     #查看对象(元素)名
str(Lst)       #查看对象(元素)属性:名字、数据类型和取值

#列表的快捷访问、R的变量搜索路径表
name          #这样能否直接访问Lst中的name元素?
attach(Lst)   #直接访问列表元素,需绑定(将Lst插入R的变量搜索路径表位置2)
search()      #R的变量搜索路径表(自定义外部变量在前,软件包变量在后),加载包或绑定对象会改变次序
name; wife 
detach(Lst)   #解除绑定,若用detach()则默认删除搜索路径表的位置2

注意:

  1. 列表中的元素若与已有对象同名,则绑定不(完全)成功
  2. 变量搜索路径中同名变量的访问次序:由前向后查找。试试能否为T(base包中为TRUE)赋值? 可以.
  3. R编程的常见错误是你误用了未曾赋值的变量程序却不报错(该变量在搜索路径中某一处已定义),需要留心

1.3.4 数据框

数据框结合了矩阵与列表的特点,在数据处理中应用广泛

数据框最接近实际数据,行代表观测(记录),列代表变量(指标)。

rownames(), colnames() 修改行/列名

# 1)	定义
# data.frame(*=*, *=*, …)	注意格式、常分行书写
df <- data.frame(
  Name = c("Alice", "Becka", "James", "Jeffrey", "John"),
  Sex = c("F", "F", "M", "M", "M"),
  Age = c(13, 13, 12, 13, 12),
  Height = c(56.5, 65.3, 57.3, 62.5, 59.0),
  Weight = c(84.0, 98.0, 83.0, 84.0, 99.5)
); df

class(df)     #该对象为data.frame类
is.data.frame(df)  #判断是否为data.frame类,结果为真
# as.data.frame()			矩阵、列表(子对象等长)均可转成数据框
x <- matrix(1:8, nrow=2); x
as.data.frame(x)

# 
# 2)	查看数据框
# names(), str()		查看基本信息,同list
names(df); str(df)
#注意:非数值型变量被强制转换为因子,因子将在下面介绍

# dim(), nrow(), ncol()		取维度、行数、列数
dim(df); nrow(df); ncol(df)

# View() 以表格形式查看df的详情(相当于在右上方窗口中单击"df")
View(df)

# edit(), fix()		视窗修改,修改df中的数据
edit(df); fix(df)

# 
# 3)	访问与修改
# X[行号, 列号]		用法同matrix,“-”表示剔除
df[1,3]; df[1:2,3]; df[1:2,-3]

# X[列号]				同X[ , 列号]
df[1]; df[-2]
df[c(1,3)] #一次索引两列
df[1,] #第一行

# $, attach(), detach()		用法同list
df$Sex; df$Height
attach(df); Sex; detach(df)

# X[列的逻辑表达式, ]	用于筛选行(记录)
df[df$Sex=="M", ]
df[df$Sex=="M" & df$Age<13, ]
df[df$Sex=="M", ]$Age
df$Age[df$Sex=="M"]   #同上 

# <-, NULL				新增/修改/删除列,行修改不常用
df$Class <- c(1:3,2,3); df
df$Class <- NULL; df
df[1,3] <- 13
df[6,] <- c("Mary", "F", 12, 60, 90); df  #行修改不常用
df <- df[-6,]; df

# rownames(), colnames()		用法同matrix,列名修改要谨慎
colnames(df)
rownames(df) <- LETTERS[1:nrow(df)]; df
df["A",]

# 
# 4)	合并数据框
# cbind()/rbind()			合并列/行
rbind(df, df) #放下边
cbind(df, df) #放右边

# merge(x, y, by=*, all=T/F,…)		依某列合并行(记录)
df1 <- data.frame(
  Name = c("Becka", "James", "Jeffrey", "John"),
  Class = c(1:3,2)
); df1
merge(df, df1, by="Name", all=T) #有缺失的记录是否显示
merge(df, df1, by="Name", all=F)
# 
# 5)	联动排序:order() 默认升序
df[order(df$Height), ]
df[order(df$Age, df$Height, decreasing=c(F,T)),] #先按年龄升序排,年龄相等的按降序排列

df$Name[order(df$Height)]

# 
# 6)	数值计算(常基于列)
# colSums(), colMeans()		求列和、列均值
# apply(X, MARGIN, FUN, ...)	用法同matrix
colMeans(df[,4:5])
apply(df[4:5], 2, mean) #向量
df

# sapply(X, FUN, ...), lapply(X, FUN, ...)		对列施加运算,返回格式不同
sapply(df[4:5], mean) #向量
sapply(df[4:5], rank)
lapply(df[4:5], mean) #列表

# 
# 7)	其他常用命令
# head(), tail()  		默认只看前6、后6行
head(df); tail(df)
head(df,3) #查看前3行

# unique() 				只看不同分量,也可以说是删除重复值
#unique返回向量,数据框或数组(如x),但删除了重复的元素/行。
unique(rep(1:3, c(3,4,5)))
unique(df$Age) 

1.3.5 因子

factor. 以下包含有函数gl(),cut(),sample(), tapply,table

变量可归结为名义型、有序型或连续型变量。

  • 名义型变量是没有顺序之分的类别变量。

  • 有序型变量表示一种顺序关系,而非数量关系。

  • 连续型变量可以呈现为某个范围内的任意值,并同时表示了顺序和数量。

类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor).

#构造字符型因子
sexs <- c("F","F","M","M","M"); sexs   
sexsF <- factor(sexs); sexsF   #将字符串向量转化为因子,同as.factor()
class(sexsF)     #SexF是因子,也可用is.factor(sexsF)来判断
levels(sexsF)    #查看因子水平,因子水平是字符串向量


#表示名义变量
status <- c("Poor", "Improved", "Excellent", "Poor")
status <- factor(status)
status #Levels: Excellent Improved Poor

#要表示有序型变量,需要为函数factor()指定参数ordered=TRUE.
status <- factor(status,ordered = T) 
status #Levels: Excellent < Improved < Poor

#按默认的字母顺序排序的因子很少能够让人满意。你可以通过指定levels选项来覆盖默认排序
status <- factor(status, order=TRUE, 
                 levels=c("Poor", "Improved", "Excellent"))
status #Levels: Poor < Improved < Excellent

#数值型变量可以用levels和labels参数来编码成因子。
nums <- sample(1:2,8,replace=T); nums  #抽样:从1~2中有放回地随机抽样8次
factor(nums)   #将数值向量转化为因子,因子水平是:"1","2"
numsF <- factor(nums,levels=1:2,labels=c("F","M")); numsF  #水平1,2更名为"F","M"

#sample(x, size, replace = FALSE, prob = NULL) 向量 抽几次 是否放回 概率

#gl()生成有规律的因子:gl(n, k, length = n*k, labels = 1:n, ordered = FALSE)
#通过指定其水平模式来生成因子。k是重复次数
gl(3,5)     #结果:1 1 1 1 1 2 2 2 2 2 3 3 3 3 3,Levels: 1 2 3
gl(3,1,15)  #结果:1 2 3 1 2 3 1 2 3 1 2 3 1 2 3,Levels: 1 2 3
gl(3,2,15)  #1 1 2 2 3 3 1 1 2 2 3 3 1 1 2
gl(3,3,15)  #1 1 1 2 2 2 3 3 3 1 1 1 2 2 2

gl(2, 1,10,labels = c("Control", "Treat"))
gl(2, 2,10,labels = c("Control", "Treat"))
gl(2, 3,10,labels = c("Control", "Treat"))

例1: 演示了普通因子和有序因子的不同是如何影响数据分析的

patientID <- c(1, 2, 3, 4) 
age <- c(25, 34, 28, 52) 
diabetes <- c("Type1", "Type2", "Type1", "Type1") 
status <- c("Poor", "Improved", "Excellent", "Poor")  
diabetes <- factor(diabetes) 
status <- factor(status, order=TRUE)
patientdata <- data.frame(patientID, age, diabetes, status)
str(patientdata)
summary(patientdata) #显示连续型变量的最小值、最大值、均值和各四分位数;以及因子的频数统计

例2:因子的应用——成绩分析的例子

scores<-scan()   #交互式输入成绩向量,注意需在输入完毕后在console窗口按回车键
25  45  50  54  55  61  64  68  72  75  75  
78  79  81  83  84  84  84  85  86  86  86  
87  89  89  89  90  91  91  92  100
cut(scores,breaks=c(0,59,70,85,100))   #将数值转换为因,利用cut函数截断连续取值的数据, 构造成绩水平因子  
scoresF <- cut(scores,breaks=c(0,59,70,85,100),labels=c("差","中","良","优")); scoresF #更改标签
table(scoresF)    #频数统计:统计各水平(成绩区间)下数据个数,返回值class属性为table

sexs <- sample(c("F","M"),length(scores),replace=T); sexs    #随机抽样,构造性别向量
table(sexs)      #频数统计:统计不同性别数据个数,sexs被强制转换成因子(因子的本质:分类变量)
table(sexs,scoresF)  #按性别、成绩水平作交叉频数统计

tapply(scores,sexs,mean)  #按因子不同水平计算成绩均值,sexs被强制转换成因子

补充::查看、修改和清除工作空间中的变量与数据集(右上方窗口Values/Data列表中)

ls()      #列出全部变量与数据集 List Objects
rm(df)    #清除df
rm(list=ls(all=TRUE))   #清除所有变量,等同于右上方窗口的扫把功能
#利用RStudio的扫把很容易删除R内存的对象、变量、图形等
#按“Ctrl+L”是清屏(得到一个干净的屏幕)

实验1 R的基本知识-1

# 实验1 R的基本知识-1

# 1.输出无理数e的(近似)值;
exp(1)

# 2.求 1+2+…+100 的和;
sum(1:100)

# 3.求 1+1/2+…+1/15 的(近似)值;
sum(1/(1:15))

# 4.生成规则序列s1:1,1,1,2,2,2,…,6,6,6;
s1 = rep(1:6,each=3);s1

# 5.生成规则序列s2,使1,2,3,4各重复5,2,1,3次;
s2=rep(1:4,c(5,2,1,3));s2

# 将七名学生的成绩98,100,86,90,83,92,55赋值给向量Score,并完成9-14题:
Score=c(98,100,86,90,83,92,55);Score

# 6.选出Score中>=90的分量,求其均值;
mean(Score[Score>=90])
#mean(Score [which(Score>=90)]) which---选出逻辑值为True的.

# 7.将Score中<60的分量改写为60;
#S = Score;S[S<60]=60;S 不需要建立副本
Score[Score<60]=60;Score

# 8.显示Score中最低的三个成绩(按升序排列);
#S_sort = sort(Score);S_sort[1:3]
sort(Score)[1:3]

# 9.输出Score的排名次序(成绩最高者排第1),保存至Rank;
Rank = rank(-Score)  #rank---默认小的排第一

# 10.生成规则序列:st1708,…,st1714,保存至No;
num = 1708:1714;num
NO = paste("st",as.character(num),sep="");NO

# 11.将No,Score和Rank按列绑定并显示(提示:查询rbind及cbind命令的用法);
cbind(NO,Score,Rank)
R语言数据分析入门:从零开始掌握数据分析方法(超详细教程) 在大数据时代,R语言以其强大的统计分析和可视化能力,成为数据科学领域的重要工具。如果你想快速入门R语言并掌握数据分析的核心技能,这篇文章将带你从基础到进阶,全面了解R语言的应用场景、函数使用及实践案例。探索性数据分析和统计学方法是数据分析的基础工具:EDA:通过可视化快速了解数据模式、关系和问题。统计学:通过假设检验、方差分析等方法,科学验证模型的有效性和显著性。结合 EDA 和统计学方法,不仅能帮助数据科学家更好地理解数据,还能提高模型的准确性和可靠性。 阅读详情

相关推荐

初识数据分析利器SPSS

今天这篇文章小白带大家了解一款做数据分析的利器—SPSS。 不知道大家有没有了解过SPSS,如果了解过甚至使用过的同学又对这款工具有多深的认识呢? SPSS是一款常用的数据分析工具,不管是在学校课程、学术论文还是数据分析工作中都是非常常见的。在之前有跟大家介绍过,使用SPSS进行数据分析最突出的特点就是操作界面极为友好,输出结果美观漂亮。它的界面同EXCEL表类似,在从其他数据库读入数据时非常...

小白数据营的博客 4210

R语言的基本数学运算

从为对象变量命名说起,介绍R语言的基本算数运算。

天下弈星~的博客 4317

探索数据分析的利器——R语言

它提供了丰富的数据处理和分析函数库,具有灵活性和可扩展性,使得数据分析师和科学家能够高效地处理和分析大规模数据集。本文将介绍R语言的基本语法和常用数据分析操作,并提供相应的源代码示例。综上所述,R语言是一种强大的数据分析工具,具有丰富的函数库和灵活的语法,适用于各种数据处理、分析和可视化任务。通过掌握R语言的基本语法和常用操作,数据分析师可以高效地处理和分析数据,并从中获得有价值的洞见和结论。除了上述示例外,R语言还提供了各种高级统计分析和机器学习算法的函数库,例如线性回归、决策树、聚类分析等。

2301_79326891的博客 228

R语言-第十章输入输出

文章目录1.连接键盘与显示器1.1使用scan()函数 1.连接键盘与显示器 1.1使用scan()函数

qq_46040234的博客 3481

R语言特色:数据分析利器

R语言作为一种强大的数据分析工具,具有丰富的功能和灵活的语法。无论是数据处理、数据可视化还是统计建模,R语言都提供了广泛的库和函数来满足不同需求。通过学习和运用R语言,我们可以更高效地进行数据分析和解决实际问题。希望本文介绍的几个R语言的特色功能能对你有所启发,更好地利用R语言进行数据分析!它的强大之处在于其丰富的数据处理和可视化功能,以及广泛的社区支持和开源生态系统。无论是数据清洗、探索性数据分析还是复杂的统计建模,R语言都能提供丰富的工具和函数库来满足各种需求。R语言特色:数据分析利器。

PixelNinja的博客 313

R语言:数据分析和统计建模利器

同时,R语言中有许多专门的统计软件包,如lme4、ggplot2和caret,它们提供了额外的统计模型和图形化工具,使得统计建模变得更加简单和灵活。同时,R语言中有许多专门的统计软件包,如lme4、ggplot2和caret,它们提供了额外的统计模型和图形化工具,使得统计建模变得更加简单和灵活。通过使用R语言,你可以轻松地进行数据探索、建模和可视化工作,从而获得有价值的洞察和结论。它具有丰富的数据处理和统计分析功能,以及大量的开源软件包,使得数据科学家和统计学家能够轻松地进行数据探索、建模和可视化工作。

SVIPCODE的博客 323

springboot druid mybatis 多数据源配置和事务处理

目录参数配置数据源数据库名称等基础配置数据库1数据库2事务 参数配置 spring: datasource: # 使用阿里的Druid连接池 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver druid: paperpushsystem: url: username: password:

more_try的博客 2224

R语言实战:数据分析和可视化的利器

本文简要介绍了R语言的基础知识,并演示了一些常用的数据分析和可视化技术。R语言作为一种功能强大的数据分析工具,可以帮助数据科学家和分析师更好地理解和应用数据。R语言是一种自由、开源的编程语言,专门用于统计计算和图形展示。而R语言作为一种功能强大且广泛使用的数据分析工具,受到了众多数据科学家和分析师的喜爱。本文将介绍R语言的基础知识,并演示一些常用的数据分析和可视化技术,旨在帮助读者更好地理解和应用R语言。R语言提供了丰富的数据分析和统计函数,使得我们可以轻松地进行各种数据分析任务。二、数据结构和基本操作。

CyberLynxO的博客 147

cp文书

这里分析到 加密的数据 可以通过DES3里面的 decrypt函数解密。不同网站检测点会有点不一样 但大致的流程都是一样的。和药x监x局有一点区别就是 第二段自执行js里面有个。运行自调用js的时候 , 要补的环境也是。套了下药x监x局的环境代码 稍微改了下后。参数 这个同理药#监#局 通过。方法 在其他js文件里面也能找到。直接调用就行了 ,该补的函数就补。然后列表页解出来的数据 里面的。对象 也能找到 都扣出来。这几个函数都扣出来之后。可以发现 也是调用的。就是详情页的唯一id。

qq_40979337的博客 4万+

R语言:数据分析和统计建模的利器

丰富的图形和可视化功能:R语言提供了多种绘图函数和图形设备,可以生成高质量的统计图表和数据可视化结果。统计分析和建模功能:R语言内置了大量的统计分析和建模函数,包括描述统计、假设检验、线性回归、非线性回归、时间序列分析等。上述代码展示了如何创建向量、计算向量的和、均值,选择和过滤向量中的元素,合并两个向量,排序向量,以及计算向量的长度等常见的数据处理操作。强大的数据处理能力:R语言提供了丰富的数据处理函数和操作符,可以对数据进行各种操作,如子集选择、过滤、排序、合并等。R语言:数据分析和统计建模的利器。

PixelNovaO的博客 265

quartus 13.1常见报错解决方法

在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。 一、编译出现lience错误 在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。 如图所示有两种破解器,分别对应32位和64位的软件,大部

肥宅的博客 3万+

R语言:气象水文领域的数据分析与绘图利器

R语言:气象水文领域的数据分析与绘图利器

2401_89571885的博客 928

10X Genomics单细胞数据分析实战:从FASTQ到UMAP可视化的完整流程

本文详细介绍了10X Genomics单细胞数据分析的完整流程,从FASTQ原始数据处理到UMAP可视化。通过Seurat工具包实现数据质量控制、标准化、降维聚类和细胞注释,特别适合生物信息学新手学习。文章包含可复现的代码示例和常见问题解决方案,帮助研究者快速掌握单细胞测序数据分析的核心技术。

weixin_30952535的博客 535

R语言——数据分析的一把利剑

R语言,我把它称之为数据分析的一把利剑。

数据人 8265

数字IC设计——功耗分析

功耗是数字IC芯片的一个重要指标

知识,既贵,又便宜。 9364

绿标短网址app.10086.cn/xxxxx移动短网址缩短接口网址api调用php方式解析

绿标短网址app.10086.cn/xxxxx 移动网缩短接口网址api调用php方式解析 app.10086.cn是移动网站的接口,可以制作移动网等第三方官方网站域名的任意生成接口,由于是认证企业,可以再抖音 微信 qq等第三方渠道正常打开不拦截提示,第三方网址,头条文章等,效果非常号,这里记录下api接口,纯技术php生成,具体规则可以去抖音的开放平台去申请对应接口 。这里用我php模拟抓包获取方式 GET http://www.app10086cn.cn/?i=app.10068.cnHTTP/1.1

qq_20300095的博客 5908

R 包:数据分析与统计编程的利器

R 包是 R 编程语言中用于扩展其功能的软件包。每个包都包含了一组相关的函数、数据集和编译过的代码,它们共同实现了一个特定的功能或一组相关的功能。R 包可以用于执行各种任务,包括数据可视化、统计分析、机器学习、文本分析等。

lsx202406的博客 651

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文通过一个RTL8306MB交换芯片驱动开发的实战案例,深入剖析了RMII接口调试中的经典陷阱。文章详细描述了因TX_EN与CRS_DV信号线交叉连接错误导致的“静默”故障,并分享了使用逻辑分析仪和示波器进行硬件排查的完整流程与核心技巧,为嵌入式网络驱动开发提供了宝贵的避坑指南。

weixin_29267307的博客 421

R语言Shiny官方教程中文版下载:构建可视化数据分析平台的利器

R语言Shiny官方教程中文版下载:构建可视化数据分析平台的利器 【下载地址】R语言Shiny官方教程中文版下载 R语言Shiny官方教程中文版提供了一份全面且易于理解的学习资源,帮助用户掌握如何使用R语言构建交互式数据可视化平台。教程详细介绍了Shiny框架的基础概念、创建交互式网页的方法、数据可视化技巧、数据输入输出...

gitblog_06791的博客 373

基于YOLO系列的安全帽检测系统:从理论到实现的完整指南

安全帽检测作为计算机视觉在工业安全领域的重要应用,近年来得到了广泛关注。本文详细介绍了基于YOLOv5、YOLOv6、YOLOv7和YOLOv8的安全帽检测系统的完整实现方案,包括算法原理、数据集构建、模型训练、性能优化以及完整的UI界面设计。通过对比分析不同YOLO版本的性能差异,本文为工业安全检测系统的开发提供了全面的技术参考和实践指导。

YOLO 364

【智能流体力学】使用ANSYS Fluent + SpaceClaim + SCDM制作流体力学前处理的几何模型

生成来源.scdoc文件来自前处理工具生成的模型数据,或在 FLUENT 中创建和保存的模型。生成方式: 通过前处理工具导出网格数据,或在 FLUENT 中设置并保存模型。作用: 用于储存模型的结构信息和设置,确保在 FLUENT 中的正确导入和使用。.x_t文件是 Parasolid 文件格式的扩展名,用于存储三维模型数据。在 ANSYS Fluent 中,这种格式通常用于在前处理工具之间交换几何数据。要创建.x_t。

源代码杀手的博客 3265

da-coding-rstats:数据分析与R编程入门利器

da-coding-rstats:数据分析与R编程入门利器 项目介绍 da-coding-rstats 是一套面向数据分析和R编程的教程材料,由多位学者共同开发,旨在辅助《Data Analysis for Business, Economics, and Policy》一书的教学。该项目不仅覆盖了R语言的基础编程原则、数据结构和数据清洗,还包括数据探索、可视化、报告以及建模等多个方面。 项目技术...

gitblog_00964的博客 858

nvidia jetson orin调试 MAX96712 serdes相机(SG2-AR0233C-GMSL2)

背景:想了解一下关于nvidia orin camera相关的模块,基于Drive Orin demo板的话,没有合适的相机,用 nvsipl框架点亮 GMSL相机不知如何下手,那么基于nvidia Jetson orin的话,目前国内有对应的转接板以及GMSL相机可以参考,基于此,那么本文详细记录一下关于nvidia orin的相关踩坑记录;需要Nvidia Jetson Orin开发板一个,MIPI转接板一个,MIPI转GMSL转接板一个,GMSL线束(fakra单线束),GMSL摄像头一个。

qq_30025621的博客 4447

数据分析的心法、手法和利器

“人人都是数据分析师”,这句话并不是空穴来风,而是随着大数据的深入落地,每个产业都会以数据驱动的模式经营。因此,这要求产业中的每个人都必须能够分析数据。同时,伴随着技术的发展,也会有很多简单的工具供大家使用。 当打开招聘网站中数据分析师的岗位介绍时,能够发现数据分析师的要求离不开做模型、能够使用分析软件、统计分析等几个关键词,一眼看去会给人一种这是一个技术要求很高,对数学要求很高的工作,数据分析...

gulie8的博客 597

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

teal:交互式探索数据分析的利器

teal:交互式探索数据分析的利器 在当今数据驱动的时代,数据分析工具的选择显得尤为重要。teal 是一个基于 Shiny 的交互式探索数据分析框架,它为用户提供了强大的数据探索能力。下面,我们将详细介绍 teal 的核心功能、技术特点以及应用场景,帮助您更好地理解和运用这个项目。 项目介绍 teal 是一个专门用于交互式探索数据分析的框架,它允许开发者通过指定数据和分析模块,快速构建功能丰富的数...

gitblog_00626的博客 942

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: R语言plot函数以及acf函数,随机性检验
下一篇: 利用图示法判别AR,MA,ARMA,ARIMA模型平稳性
「已注销」
博客等级 码龄7年 100粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值