R语言学习系列06-修改变量名,数据排序,随机抽样

合集下载

生物信息学编程:R语言 数据

生物信息学编程:R语言 数据

4.5 缺失值
• 缺失值以符号NA表示。 • 不可能出现的值通过符号NaN表示。 • 字符型和数值型数据使用相同的缺失值。 • 缺失值被认为是不可比较的。
• 赋值
– X<-c(1,2,NA,3) – is.na(X) – Y<-data.frame(X, X) – is.na(Y)
• 删除
– sum(X) – sum(X,na.rm=TRUE) – Z<-na.omit(Y)
R语言 数据
• 创建数据集
数据
• 基本数据管理
• 高级数据管理
创建数据集
• 2.1 数据集的概念 • 2.2 数据结构 • 2.3 数据的输入 • 2.5 处理数据对象的实用函数
2.1 数据集的概念
• 数据集是由数据构成的数组 • R可以处理的数据类型
– 数值型 – 字符型 – 逻辑型(TRUE/FALSE) – 复数型(虚数) – 原生型(字节)
4.9 数据集的合并
• merge()
• ID <- c(1,2,3,4) • Age<- c(15,17,22,23) • mydata1<-data.frame(ID , Age)
• ID <- c(1,2,4,3,5) • Tall<- c(1.6,1.7,1.8,1.7,1.7) • mydata2<-data.frame(ID , Tall)
• newdata1<- subset(mydata,Age>15) • newdata2<-
subset(mydata,Age>15,select=c(ID,Score))
• Total <- merge(mydata1,mydata2,by="ID")

r语言打乱数组排序序的函数

r语言打乱数组排序序的函数

r语言打乱数组排序序的函数近年来,数据分析技术得到了巨大的发展,许多研究工作者和数据分析从业人员都需要对数据进行处理和分析。

在这个过程中,处理数据的能力就显得尤为重要了。

R语言是一种十分流行的统计计算和数据分析工具,随着其在数据分析领域的广泛应用,对其各类函数的掌握也变得至关重要。

在对数据进行建模或机器学习算法的训练时,我们经常需要对数据进行随机打乱。

而R语言中有一个很实用的函数可以用来打乱数组的排序序,那就是shuffle()函数。

下面我们将列举几个相关的点,详细介绍shuffle()函数的使用方法和相关的注意事项。

1.打乱数组排序序的原理打乱数组排序序的方法有很多,而R语言中的shuffle()函数的原理是把数组中的所有元素随机重排。

在数据分析中,shuffle()函数经常用于打乱整个数据集的顺序,以达到数据随机化的效果。

2.shuffle()函数的语法shuffle()函数的语法比较简单,其基本的用法如下:shuffle(x)其中,"x"表示要打乱排序序的数组名称。

需要注意的是,shuffle()函数直接对数组进行操作,不返回任何值。

3.shuffle()函数的使用方法使用shuffle()函数打乱数组排序序也非常简单,我们可以通过下面的代码来演示:# 生成一组随机数x <- c(1,2,3,4,5,6,7,8,9,10)# 打乱排序序shuffle(x)print(x)在这个例子中,我们首先生成一个包含1到10随机数的向量,然后调用shuffle()函数对其进行打乱排序。

最后,我们用print()函数输出打乱排序后的向量,观察结果如下:[1] 4 2 5 6 3 1 8 10 9 7可以看到,shuffle()函数已经成功地对数组的排序序进行了打乱。

需要注意的是,shuffle()函数是直接对原数组进行打乱排序操作的,因此如果没有备份,原数组就会丢失。

4.关于shuffle()函数的注意事项在使用shuffle()函数时,还需要注意以下几个方面:(1) shuffle()函数是直接对原数组进行操作的,如果没有进行备份,原数组将会丢失。

【孙老湿画图系列--第八弹】R中绘图顺序不是自己想要的怎么办?

【孙老湿画图系列--第八弹】R中绘图顺序不是自己想要的怎么办?

【孙老湿画图系列--第八弹】R中绘图顺序不是自己想要的怎么办?R中绘图顺序不是自己想要的怎么办?今天就给大家介绍个利器factor(因子)。

在学习factor之前,先了解一下什么是DataFrame:小板报DataFrame一般译为数据框,由行和列组成,是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量。

与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。

DataFrame每一列有列名,每一行也可以指定行名。

如果不指定行名,那么就是从1开始自增的Sequence来标识每一行。

一般我们绘图都是读取自己的数据,所以可以通过读取外部的数据创建一个dataframe。

可以通过read.table(一般是tab分割或者空格分割)或者read.csv(逗号分隔的csv文件)读取文件,比如我们读取一个tab分隔的txt文件:dat <- read.table(“yourfile.txt”,="" header="Ttue," sep='\t' ,="" s="">header #指定是否第一行作为表头sep #制定分隔方式,如果是tab分隔sep=”\t”s #指定那一列为行名,没有则不用指定我们利用R的内置数据iris,查看一下其结构:head(iris)如果我们要用Sepal.Length, Sepal.Width两列数据画图,并且Species是分组变量:p <- ggplot(iris,="" aes(sepal.length,="" sepal.width,="" col="Species))">geom_point() +theme_bw() +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14))p但是图例的现实顺序不是我们想要的,我们想按照versicolor, virginica, setosa这个顺序显示,怎么办呢?首先我们levels()函数查看Species变量是按照setosa, versicolor, virginica方式排序的,那怎么才能按照我们的方式排序呢?这就不得不提R中强大的因子factor了:变量一般可归结为类别型,有序型,连续型变量。

r语言 排序函数

r语言 排序函数

r语言排序函数在R语言中,可以使用以下几种排序函数来对向量、矩阵或数据框进行排序:1. sort()函数:用于对向量进行排序。

默认情况下,sort()函数按升序对向量进行排序。

示例:```Rx <- c(5, 2, 7, 1, 9)sorted_x <- sort(x)print(sorted_x)```2. order()函数:用于返回按升序排序时每个元素的索引。

可以使用返回的索引来对向量进行排序。

示例:```Rx <- c(5, 2, 7, 1, 9)sorted_x <- x[order(x)]print(sorted_x)```3. rank()函数:用于返回向量中每个元素的排序等级。

可以使用返回的等级来对向量进行排序。

示例:```Rx <- c(5, 2, 7, 1, 9)sorted_x <- x[rank(x)]print(sorted_x)```4. arrange()函数(需要加载dplyr包):用于对数据框按照指定列进行排序。

示例:```Rlibrary(dplyr)df <- data.frame(name = c("Alice", "Bob", "Charlie"), age = c(25, 30, 20))sorted_df <- arrange(df, age)print(sorted_df)```这些函数可以根据具体需求选择使用。

需要注意的是,排序函数默认是按升序排序,如果需要降序排序,可以使用附加参数进行设置。

R语言常见的处理数据的方法汇总(持续更行中)

R语言常见的处理数据的方法汇总(持续更行中)

R语⾔常见的处理数据的⽅法汇总(持续更⾏中)#基于R语⾔的数据处理及清洗简单汇总getwd() #查看⼯作⽬录setwd("E:/⼯作⽂件/model") #改变⼯作⽬录#安装及释放包install.packages("packge-name") #安装包detach(package:packge-name) #释放包#并⾏运算设置library(doParallel)cl <- makeCluster(15)registerDoParallel(cl)#报错空间溢出:Java heap space,需要设置运⾏内存library(rJava).jinit(parameters="-Xmx7888m")#删除R软件运⾏时保存在内存中的所有对象rm(list=ls(all=TRUE))#常规数据查看data(data) #加载数据集datahead(data) #显⽰数据集data的前若⼲条数据tail(data) #显⽰数据集data的后若⼲条数据str(data) #探寻数据集内部结构summary(data) #获取数据集data的概括信息dim(data) #查看数据集data的纪录数和维度数table(data$is_do) #查看数据集data中维度is_do的数值分布data<- data[which(data[,11]==1),] #选取data数据表⾥第11列维度为1的数据data$field<-as.numeric(data$field) #数值转换data$field<-as.factor(data$field) #因⼦转化for (i in 1:25) {data[,i] <- as.numeric(as.vector(data[,i]))} #循环技术进⾏数据类型转化#条件选择并赋值y[which(y<1.5)] <- 1data$is_do <- ifelse(data$is_do > 0.7 ,2,ifelse(data$is_do > 0.3 ,1,0))q1_AGE<-quantile(data$AGE, 0.03,na.rm=TRUE) #data数据表中维度AGE从⼩到⼤排序前3%处数值q2_AGE<-quantile(data$AGE, 0.97,na.rm=TRUE) #data数据表中维度AGE从⼩到⼤排序前97%处数值data$AGE <- ifelse(data$AGE < q1_AGE,q1_AGE,data$AGE)data$AGE <- ifelse(data$AGE > q2_AGE,q2_AGE,data$AGE)#选择字段及删除字段data <- data[names(data) %in% c("CN_EFF_DATE", "CN_EXP_DATE")] #选取data数据表中字段CN_EFF_DATE、CN_EXP_DATE data <- data[!(names(data) %in% c("CN_EFF_DATE", "CN_EXP_DATE"))] #删除data数据表中字段CN_EFF_DATE、CN_EXP_DATE #抽样data<-data[sample(nrow(data),10000),] #随机从数据集data中选取10000条纪录number=sample(nrow(data),1/4*nrow(data)) #计算数据集data样本量1/4的数值train_example=data[number,] #对数据集data随机抽样number个数#按⽐例划分数据train_sub=sample(nrow(train_example),3/4*nrow(train_example))train_data=train_example[train_sub,]test_data=train_example[-train_sub,]dim(train_data)dim(test_data)#变量处理age_new<-c()for (i in 1:length(data$AGE)){if(data$AGE[i]>=0&data$AGE[i]<18){age_new[i]<-'少年'}if(data$AGE[i]>=18&data$AGE[i]<30){age_new[i]<-'青年'}if(data$AGE[i]>=30&data$AGE[i]<60){age_new[i]<-'壮年'}if(data$AGE[i]>=60){age_new[i]<-'⽼年'}}#字段合并data_new<-data.frame(data[,c(1:16)],age_new)#矩阵归⼀化(0到1)b1=(p[,1]-min(p[,1]))/(max(p[,1])-min(p[,1]))#正则表达式gsub("\\(.*\\)","",g4$Source)#正则表达#. 代表任意字符#* 匹配0或多个正好在它之前的那个字符#.*意味着能够匹配任意数量的任何字符#关于更多正则表达式的处理见#########################更新截⽌2020年5⽉18⽇ 19点02分#########################本⽂⼤部分内容转⾃,作为⾃⼰的学习笔记。

r代码对数据集多列调换顺序

r代码对数据集多列调换顺序

r代码对数据集多列调换顺序
数据集中多列的调换顺序是数据处理中常见的操作之一。

在R语言中,我们可以使用dplyr包中的select()函数来实现这一操作。

下面是一个示例代码,展示了如何使用R语言对数据集的多列进行调换顺序。

我们需要加载dplyr包,并创建一个示例数据集:
```R
library(dplyr)
# 创建示例数据集
data <- data.frame(
A = c(1, 2, 3),
B = c(4, 5, 6),
C = c(7, 8, 9)
)
# 查看原始数据集
print(data)
```
输出结果如下:
```
A B C
1 1 4 7
2 2 5 8
3 3 6 9
```
接下来,我们使用select()函数对数据集的列进行调换。

假设我们希望将列A放在列C之后,可以按照如下方式编写代码:
```R
# 调换列的顺序
data <- select(data, B, C, A)
# 查看调换后的数据集
print(data)
```
输出结果如下:
```
B C A
1 4 7 1
2 5 8 2
3 6 9 3
```
通过上述代码,我们成功地将数据集中的列A放在了列C之后。

总结一下,本文介绍了如何使用R语言对数据集的多列进行调换顺序。

通过使用dplyr包中的select()函数,我们可以轻松地实现这一操作。

希望本文能够对你在数据处理中遇到的问题提供帮助。

r 排序函数

r 排序函数

r 排序函数r语言中的排序函数是非常有用的,它可以对一个向量或一个矩阵中的元素进行排序。

r语言中常用的排序函数有sort函数、order函数和rank函数。

sort函数:sort函数是最常用的排序函数。

它的语法如下:sort(x, decreasing = FALSE, st = TRUE)x表示要排序的向量或矩阵;decreasing表示是否按降序排列,默认为升序;st 表示缺失值的处理方式,若为TRUE,则将缺失值排在若为FALSE,则将缺失值排在最前。

我们要对一个向量x中的元素进行升序排序,代码如下:x <- c(3, 1, 4, 5, 2)sort(x)运行结果为:[1] 1 2 3 4 5如果我们要按照降序排序,可以设置decreasing参数为TRUE,代码如下:order函数返回的是排序后元素的下标,而不是排序后的元素本身。

它的语法如下:这表示将向量x排序后,元素1排在第2个位置,元素2排在第5个位置,元素3排在第1个位置,元素4排在第3个位置,元素5排在第4个位置。

rank函数:rank(x, st = TRUE, ties.method = c("average", "first", "last", "random", "max", "min"))x表示要排序的向量或矩阵;st表示缺失值的处理方式,若为TRUE,则将缺失值排在若为FALSE,则将缺失值排在最前;ties.method表示处理相同元素的方法,average表示平均分配排名,first表示按出现顺序分配排名,last表示按出现顺序反向分配排名,random表示随机分配排名,max表示取最大排名,min表示取最小排名。

我们将sort、order和rank函数结合起来,对一个矩阵中的元素进行排序,并返回排序后的下标和排名,代码如下:m <- matrix(c(3, 1, 4, 5, 2, 6), ncol = 2)o <- order(m[, 1]) # 按第1列排序r <- rank(m[, 2]) # 对第2列排名o2 <- o[r] # 按排名排序最终得到的o2就是排序后的下标。

r语言常用命令

r语言常用命令

r语言常用命令R语言是一种用于统计分析和数据可视化的编程语言,在数据科学领域被广泛应用。

本文将介绍几个R语言常用命令,包括数据读取、数据处理、数据分析和数据可视化等方面的命令。

一、数据读取在R语言中,可以使用read.table()函数读取文本文件中的数据。

该函数可以指定文件路径、分隔符等参数,将文本文件中的数据读入到R的数据框中。

例如:```Rdata <- read.table("data.txt", sep = ",", header = TRUE)```二、数据处理1. 数据筛选使用subset()函数可以根据指定条件筛选数据。

例如,筛选出年龄大于30岁的数据:```Rsubset(data, age > 30)```2. 数据排序使用order()函数可以对数据进行排序。

例如,按照年龄从小到大排序:```Rdata <- data[order(data$age), ]```3. 数据合并使用merge()函数可以将两个数据框按照指定的列进行合并。

例如,将两个数据框按照ID列进行合并:```Rmerged_data <- merge(data1, data2, by = "ID")```三、数据分析1. 描述性统计使用summary()函数可以对数据进行描述性统计分析。

例如,计算数据的平均值、标准差、最小值、最大值等:```Rsummary(data)```2. t检验使用t.test()函数可以进行两样本t检验。

例如,比较两组数据的均值是否有显著差异:```Rt.test(data1, data2)```3. 线性回归使用lm()函数可以进行线性回归分析。

例如,拟合一个简单的线性模型:```Rmodel <- lm(y ~ x, data = data)summary(model)```四、数据可视化1. 散点图使用plot()函数可以绘制散点图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

06. 修改变量名,数据排序,随机抽样一、变量的重命名1. 用交互式编辑器若修改数据集x的变量名,键入函数fix(x),即可打开交互式编辑器界面。

> score<-data.frame(student=c("A","B","C","D"),gende r=c("M","M","F","F"),math=c(90,70,80,60),Eng=c(88,78,69,9 8),pl=c(66,59,NA,88))>fix(score)>score.list<-as.list(score) #将score转化为列表>fix(score.list)(1)若数据集为矩阵或数据框将打开“数据编辑器”,单击要修改的变量名,在弹出的“变量编辑器”修改即可:(2)若数据集为列表将交互式编辑器为一个记事本,只需修改“.Names”之后对应的变量名即可:2. 用函数rename()reshape包中的函数rename(),用来修改数据库和列表的变量名,但不能修改矩阵的变量名,基本格式为:rename(x, c(oldname="newname",...))其中,oldname为原变量名,newname为新变量名。

library(reshape)>rename(score,c(pl="chinese"))student gender math Engchinese1 A M 90 88 662 B M 70 78 593 C F 80 69 NA4 D F 60 98 88>rename(score.list,c(pl="chinese"))$student[1] A B C DLevels: A B C D$gender[1] M M F FLevels: F M$math[1] 90 70 80 60$Eng[1] 88 78 69 98$chinese[1] 66 59 NA 88注意:原数据集中的变量名并未被修改。

3. 用函数names()和rename()一样可用来修改数据框和列表的变量名,不能修改矩阵的变量名;区别在于:names()会在原数据集中修改变量名。

其基本格式为:names(x)[i]<-"newname">names(score)[5]="chinese">scorestudent gender math Engchinese1 A M 90 88 662 B M 70 78 593 C F 80 69 NA4 D F 60 98 884. 用函数colnames()和rownames()用来修改矩阵的变量名(行名和列名),也能修改数据框的行名和列名。

基本格式为:rownames(x)[i]<-"newname">colnames(score)[5]="Chinese">scorestudent gender math Eng Chinese1 A M 90 88 662 B M 70 78 593 C F 80 69 NA4 D F 60 98 88>rownames(score)=letters[1:4]>scorestudent gender math Eng ChineseaA M 90 88 66bB M 70 78 59cC F 80 69 NAdD F 60 98 88二、数据排序1.函数sort(),基本格式:sort(x,decreasing=FALSE, st= FALSE,...)其中,x为排序对象(数值型或字符型);decreasing默认为FALSE 即升序,TURE为降序;st默认为FALSE(NA值将被删除),若为TRUE,则将向量中的NA值放到序列末尾。

>sort(score$math)[1] 60 70 80 90>sort(score$math,decreasing = TRUE)[1] 90 80 70 60>sort(score$Chinese,st = TRUE)[1] 59 66 88 NA2.函数rank()返回值是该向量中对应元素的秩(排名),基本格式为:rank(x,st= FALSE,ties.method=...)其中,ties.method指定对数据集中的重复数据的秩的处理方式:“average”——取平均值秩(默认)“first”——位于前面的数据的秩取小,依次递增“random”——随机定义重复秩“max”——取最大重复秩“min”——取最小重复秩>x<-c(3,4,2,5,5,3,8,9)>rank(x)[1] 2.5 4.0 1.0 5.5 5.5 2.5 7.0 8.0>rank(x,ties.method = "first")[1] 2 4 1 5 6 3 7 8>rank(x,ties.method = "random")[1] 3 4 1 6 5 2 7 8>rank(x,ties.method = "max")[1] 3 4 1 6 6 3 7 83.函数order()对数据进行排序,返回值是对应“排名”的元素所在向量中的位置,即最小值、次小值、...、最大值所在的位置。

基本格式为:order(x,decreasing=FALSE, st= FALSE,...)不同于前两个函数,order()还可以对数据框进行排序:data_frame[order(data_frame$v1, data_frame$v2, …),]若v1值相同,则按v2升序排序;要将升序改为降序,在变量前添加负号,或用decreasing = TRUE即可。

>order(score$math)[1] 4 2 3 1>score[order(score$math),]student gender math Engchinese4 D F 60 98 882 B M 70 78 593 C F 80 69 NA1 A M 90 88 66>score[order(-score$math),]student gender math Engchinese1 A M 90 88 663 C F 80 69 NA2 B M 70 78 594 D F 60 98 884. 函数rev()求逆序,将序列进行反转,即1,2,3变成3,2,1三、简单随机抽样用少量数据测试数据集时,常用随机抽样方法从整体中选出部分样本数据。

简单随机抽样,是指从总体N个样本中任意抽取n个样本,每个样本被抽中的概率相等;分为重复抽样(有放回)、不重复抽样(不放回)。

使用sampling包实现。

1. 有放回简单随机抽样函数srswr(),基本格式为:srswr(n, N)表示从总体N中有放回地随机抽取n个样本,返回一个长度为N的向量,每个分量分别表示各元素被抽取到的次数。

>library(sampling)>LETTERS[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K"[12] "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V"[23] "W" "X" "Y" "Z">s<-srswr(10,26)>s[1] 2 0 1 1 0 0 0 0 1 0 0 2 0 0 0 3 0 0 0 0 0 0 0[24] 0 0 0>ind<-(1:26)[s!=0] #被抽到的样本编号>ind[1] 1 3 4 9 12 16>n<-s[s!=0] #被抽到的样本的被抽到的次数>n[1] 2 1 1 1 2 3>ind<-rep(ind,times=n) #按次数重复被抽到的样本编号>ind[1] 1 1 3 4 9 12 12 16 16 16>sample<-LETTERS[ind] #被抽到的字母>sample[1] "A" "A" "C" "D" "I" "L" "L" "P" "P" "P"2. 不放回简单随机抽样函数srswor(),格式和返回值同srswr(),注意返回值向量中只有0和1.>s<-srswor(10,26)>s[1] 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1[24] 1 0 1>ind<-(1:26)[s!=0]>ind[1] 1 6 8 11 18 19 20 23 24 26>sample<-LETTERS[ind]>sample[1] "A" "F" "H" "K" "R" "S" "T" "W" "X" "Z"3. 函数simple()实现有放回和不放回的简单随机抽样,基本格式为:sample(x, size, replace = FALSE)其中,x为数据集;size为抽取样本数;replace指定是否放回,默认为FALSE(不放回),TURE为有放回。

相关文档
最新文档