R语言-因子与向量的转换方式

一、因子的特点或性质

1、因子可视为C或JAVA语言中的枚举,适用于有限状态的表示。

2、因子不可以赋枚举集合外的值,如一个因子包含male,female,则不能再赋male和female以为的值,赋其他值会将该元素设置为空值。

二、因子的建立

1、因子的建立

假定有因子gendor,为一组人的性别:

> gendor<-factor(c('m','f','f','m'),labels=c('male','female'))

则通过上式建立一个性别因子。

> gendor
[1] female male   male   female
Levels: male female

可以看到有两个级别(或水平),分别是male和female。

2、有序因子

若因子需要有序,比如差,一般,好,很好,非常好,则可使用order参数:order=TRUE。

例如:

>qulity<-c('good','common','good','better','excellent')
> q<-factor(qulity,levels=c('bad','good','common','better','excellent'),
+ labels=c('bad','good','common','better','excellent'),order=TRUE)
> q
[1] good      common    good      better    excellent
Levels: bad < good < common < better < excellent
> q[4]
[1] better
Levels: bad < good < common < better < excellent

三、因子与向量的转换

1、向量到因子转换

实际上就是构造因子,例如上例:

>qulity<-c('good','common','good','better','excellent')
> q<-factor(qulity,levels=c('bad','good','common','better','excellent'),
+ labels=c('bad','good','common','better','excellent'),order=TRUE)
> str(q)
 Ord.factor w/ 5 levels "bad"<"common"<..: 3 2 3 4 5

2、因子到向量的转换

(1)使用as.vector()函数,例子:

> q<-factor(qulity,levels=c('bad','common','good','better','excellent'),
+ labels=c('bad','common','good','better','excellent'),order=TRUE)
> q
[1] good      common    good      better    excellent
Levels: bad < common < good < better < excellent
> str(q)
 Ord.factor w/ 5 levels "bad"<"common"<..: 3 2 3 4 5
> q2<-as.vector(q)
> q2
[1] "good"      "common"    "good"      "better"    "excellent"
> str(q2)
 chr [1:5] "good" "common" "good" "better" "excellent"

可以看到已经转换为字符型。

(2)使用as.numeric()函数,因子被转换为数字,例子:

> q2<-as.numeric(q)
> q2
[1] 3 2 3 4 5
> str(q2)
 num [1:5] 3 2 3 4 5

参考:

因子(factor)和有序因子(ordered factor)

因子用来存储类别变量(categorical variables)和有序变量,这类变量不能用来计算而只能用来分类或者计数。因子表示分类变量,有序因子表示有序变量。

生成因子数据对象的函数是factor(),语法是factor(data, levels, labels, ...),其中data是数据,levels是因子水平向量,labels是因子的标签向量。

1、创建一个因子。

例1:

colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y')
col <- factor(colour)
col1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow'))
     #labels的内容替换colour相应位置对应levels的内容
col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
col_vec <- as.vector(col2) #转换成字符向量
col_num <- as.numeric(col2) #转换成数字向量
col3 <- factor(colour, levels = c('G', 'R'))

2、创建一个有序因子

例1:

score <- c('A', 'B', 'A', 'C', 'B')
score1 <- ordered(score, levels = c('C', 'B', 'A')); score1

3、用cut()函数将一般的数据转换成因子或有序因子

例1:

exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,
     65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88)
exam1 <- cut(exam, breaks = 3) #切分成3组
exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组
attr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')
ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言-实现将向量转换成一个字符串

    将向量a,b装换成一个字符串,其中: a=c(1,2,3,4) b=c(2,3,4,5) 为了将其转化成一个字符串可以通过引入包stringr,使用str_c实现,使用paste也一样可以达到目的,如下: library(stringr) a_b=str_c(a,b,collapse='') paste(a,b,sep='') 输出为: [1] "12233445" 在实际的数据处理中看可以用来给数据框建联合索引,比如数据框中需要用到的索引列联接成一列,则在实际中可以方便很多,避免很多

  • R语言中向量的加法和乘法运算

    在R语言中,不同长度的向量也是可以相加和相乘的,乘法的规则和加法类似 1,相同长度的向量相加 > x<- 1:4 > y<- 1:4 > z<- x+y > z [1] 2 4 6 8 规则就是 x[1]+y[1],x[2]+y[2],x[3]+y[3],x[4]+y[4] > x<- 1:4 > y<- 1:4 > z<- x*y > z [1] 1 4 9 16 乘法也类似 2,不同长度的向量相加 > x<

  • R语言最简单的向量赋值方法示例

    1. 生成等差数列的向量x x <- 1:10 #将x向量赋值为1 2 3 4 5 6 7 8 9 10 结果为 > x  [1]  1  2  3  4  5  6  7  8  9 10 2. 将x的值全部修改成0 x[] <- 0 #非常简洁的赋值方法,建议使用 x[1:length(x)] <- 0 #不建议使用的赋值方法 结果为: > x[] <- 0 > x  [1] 0 0 0 0 0 0 0 0 0 0 3.使用seq函数 x <- seq(

  • R语言中的vector(向量),array(数组)使用总结

    对于那些有一点编程经验的人来说,vector,matrix,array,list,data.frame就相当于编程语言中的容器,因为只是将R看做数据处理工具所以它们的底层是靠什么实现的,内存怎么处理的具体也不要深究. R语言很奇怪的是它是面向对象的语言,所以经常会调用系统的方法,而且更奇怪的是总是调用"谓语"的方法,用起来像是写句子一样,记起来真是让人费解.比如is.vector(),read.table(),as.vector().. 直接开始吧:(由于习惯,大部分用"=&

  • R语言向量知识点及实例讲解

    有常见的六种基本的向量类型 创建向量 设定recursive = T,c函数可以从其他数据结构中递归形成向量 > v <- c(.295, .300, .250, .287, list(.102, .200, .303), recursive = T) > v [1] 0.295 0.300 0.250 0.287 0.102 0.200 0.303 > typeof(v) [1] "double" > v <- c(.295, .300, .250

  • R语言-如何将list转换为向量

    从excel中直接读取的数据为list,如下转换为向量 as.vector(unlist(x)) 补充:R语言基本运算,向量,矩阵,list,数组 1. 基本运算 1.1 加.减.乘.除 赋值可以使用a=数值,亦可以用a<-数值 1.2 余数.整除 1.3 绝对值: abs() .判断正负:sign() .幂.指数:^ .平方根:sqrt() 1.4 以二为底的对数: log2() .以十为底的对数:log10() .自定义底的对数:log(c,base=) .自然常数e的对数:log(a,ba

  • R语言中向量和矩阵简单运算的实现

    一.向量运算 向量是有相同基本类型的元素序列,一维数组,定义向量的最常用办法是使用函数c(),它把若干个数值或字符串组合为一个向量. 1.R语言向量的产生方法 > x <- c(1,2,3) > x [1] 1 2 3 2.向量加减乘除都是对其对应元素进行的,例如下面 > x <- c(1,2,3) > y <- x*2 > y [1] 2 4 6 (注:向量的整数除法是%/%,取余是%%.) 3.向量的内积,有两种方法. 第一种方法:%*% > x

  • R语言-因子与向量的转换方式

    一.因子的特点或性质 1.因子可视为C或JAVA语言中的枚举,适用于有限状态的表示. 2.因子不可以赋枚举集合外的值,如一个因子包含male,female,则不能再赋male和female以为的值,赋其他值会将该元素设置为空值. 二.因子的建立 1.因子的建立 假定有因子gendor,为一组人的性别: > gendor<-factor(c('m','f','f','m'),labels=c('male','female')) 则通过上式建立一个性别因子. > gendor [1] fem

  • R语言因子类型的实现

    目录 1.因子 2.table()函数 3.tapply()函数 4.forcats包的因子函数 1.因子 R 中用因子代表数据中分类变量 , 如性别.省份.职业.有序因子代表有序量度,如打分结果,疾病严重程度等. 用 factor() 函数把字符型向量转换成因子,如 x <- c(" 男", " 女", " 男", " 男", " 女") sex <- factor(x) sex 返回: at

  • R语言数据读取以及数据保存方式

    一.R语言读取文本文件: 1.文件目录操作: getwd() : 返回当前工作目录 setwd("d:/data") 更改工作目录 2.常用的读取指令read read.table() : 读取文本文件 read.csv(): 读取csv文件 如果出现缺失值,read.table()会报错,read.csv()读取时会自动在缺失的位置填补NA 3.灵活的读取指令 scan() : 4.读取固定宽度格式的文件: read.fwf() 文本文档中最后一行的回车符很重要,这是一个类似于停止符

  • R语言可视化存储矢量图实现方式

    目录 1. R 中自带的默认绘图 1) PDF 格式 2) EPS 格式 2. ggplot 绘图 1) PDF 格式 2) EPS 格式 之前写的博客中有提及过如何在 R 语言中绘制矢量图,然后用于论文引用.但没有专门开一篇博客来进行说明比较,这里重新开一篇博客来进行说明. 通常保存为矢量图可能大多数时候是为了论文中的引用,所以格式一般为 EPS, PDF 这两种格式,这里也主要针对这两种格式进行说明. 1. R 中自带的默认绘图 通常我们使用 plot(), lines(), points(

  • R语言因子型数值转数值型的操作

    一直觉得只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如 x<-"123",x为character类型,而as.numeric(x)则为numeric类型的123. 但是因子(factor)类型却不一样. a<-factor(c(100,200,300,301,302,400,10)),它们的值分别为100 200 300 301 302 400 10,然而 as.numeric(a)对应的值并非100 200

  • R语言中因子相关知识点详解

    因子是用于对数据进行分类并将其存储为级别的数据对象. 它们可以存储字符串和整数. 它们在具有有限数量的唯一值的列中很有用. 像"男性","女性"和True,False等.它们在统计建模的数据分析中很有用. 使用factor()函数通过将向量作为输入创建因子. 例 # Create a vector as input. data <- c("East","West","East","North

  • R语言向量下标操作

    向量下标即元素在向量中的位置,在实践中我们可以利用下标(元素的位置)来找出自己想要的数. 利用runif函数生成包含10个正整数的向量x. options(digits = 1) set.seed(1234) x <- runif(10,min = 1,max = 20) x [1] 3 13 13 13 17 13 1 5 14 11 正整数下标 我们可以输入正整数作为下标来找出对应位置的元素. 在[]内输入下标. #向量x的第一位置的元素 x[1] [1] 3 #向量x的第2位置的元素 x[

  • R语言数据类型与相应运算的实现

    目录 一.常量与变量 1.常量 2.变量 二.数据类型 三.数值型向量 3.1 c()函数 3.2 length(x) 3.3 numeric() 四.向量运算 1.标量和标量运算 2.向量与标量运算 3.等长向量运算 4.不等长向量的运算 五.向量函数 1.向量化的函数 2.排序函数 3.统计函数 4.生成规则序列的函数 六. 复数向量 练习 一.常量与变量 1.常量    R 语言基本的数据类型有数值型,逻辑型(TRUE, FALSE),文本(字符串). 支持缺失值,有专门的复数类型.   

随机推荐