r语言转化为python_数值型与字符型转换总结|R语言

本文总结了R语言中的数据类型转换,包括向量、矩阵、数据框的基本概念,integer与double的区别,以及如何将文本转换为数字和数字转换为文本。通过实例展示了使用as.double()、as.integer()、factor()等函数进行数据转换的方法,并强调了在处理类别数据时转化为因子的重要性。
摘要由CSDN通过智能技术生成

在日常碰到问题时出现当前“数据类型不能进行操作”的提示时还是有些脑壳疼,所以这次整理了针对R数据类型转换的总结。理论部分主要是R for Data Science的向量节选翻译、《R语言实战》第二章2.2创建数据结构、《R in a Nutshell》以及猴子老师的向量ppt。

————文章结构——————

一、理论知识向量、矩阵、数据框等基本介绍

integer和double的区别

向量和因子区别

tibble和data frame区别

二、举个例子某一列文本转为数字

某一列数字转为文本

三、总结一下

——————————————

一、理论知识

1.向量、矩阵、数据框等基本介绍

有两种类型的向量:

(1)原子向量,其中有六种类型:logical,integer, double, character, complex和 raw,integer和double统称为numeric(数值)向量。

(2)列表,有时称为递归向量,因为列表可以包含其他列表。

原子向量和列表之间的主要区别在于原子向量是均匀的,而列表可以是异构的(即列表的数据结构可以不一致)。还有一个相关的对象:NULL。NULL通常用于表示缺少矢量(与NA用于表示矢量中缺少值的情况相反)。NULL通常表现为长度为0的矢量。下图为关系图。图片来源:http://r4ds.had.co.nz/vectors.html

可以说,向量是最基本存在,那么向量和矩阵、数组、数据框这些又是什么关系呢?

向量最基础。

数组:多维的向量(向量可以理解为一维数组,矩阵可以理解为二维数组)

#一维数组(向量)

a

a

#二维数组(矩阵)

b

b

#多维数组(还是数组)

c

c

结果:

这里补充以下,如果矩阵按列填充,需要加上byrow=T

b

而对于数据框,我的理解是,我们最常使用的excel表就是数据框模式,比如医院数据,病人编号、性别、血型,每一列都是相同的数据结构,结合成一个大表供我们分析。

2.integer和double区别

数值型向量包含两种类型:integer和double

我以前老纠结啥时候辨别这两类数值型向量呢?看图来操作:

查看数据类型最好用typeof,可以看出double比int要普遍一些,一般的c(1,2,3)都是double,但如果都加了L,变为integer了。这两类数值型向量不用太担心二者关系,一般R可以内部自动转换这两类数值然后计算。

也可以转换,转换代码为:

as.double()

as.integer()

3.向量和因子区别

另一个例子:

上图来源:书

再举个例子图片来源:http://www.cyclismo.org/tutorial/R/types.html

总结来说,就是属于类别的向量最好转化为因子。比如性别(男、女)、成绩评级(优秀、良好、及格、不及格),这也说明了为什么总会看到stringasfactor=False.我们一般不选择把向量先全部转为因子,面对分类型变量才考虑那么做。

4.tibble和data frame区别

这两个功能可以说完全一样,只是在看书过程中发现tibble慢慢比data frame更流行起来,详情可以见这篇文章tibble 1.0.0 | RStudio Blog,在导入dplyr包后,用tibble比用data frame更快捷简洁,tbl_df代替了table(好吧我想说,一般还是用data frame,在用到dplyr包时,改用tibble就行)

二、举个例子

1.某一类文本转为数字

有一组这样的数据,我想把性别一栏转为女为1,男为2,方便计算,如何做?

setwd("c:\\Users\\Administrator\\desktop")

data1

typeof(data1)

table(data1$children)

a

b

data1$gender

结果如下:

貌似可以,但查看结构类型,还是字符串形式,需要转为数值型才能进行后续计算。

data1$gender " />

不用担心了,已经完全转换好了。

2.某一类数字转为文本

还是这个例子,如果想把children一列转为yes(孩子数>0)和no(孩子数=0),如何做?

输入代码:

data1$children[data1$children > 0]

data1$children[data1$children == 0]

data1$children

levels=c(0,1),

labels=c("No","Yes"))

显示结果:

这里补充一句,函数factor()可为类别型变量创建值标签,代码中levels代表变量实际值,labels表示包含了理想值标签的字符型向量。

三、总结一下

本文为数据结构的温习,感觉向量是地基,地基里有土渣渣(有数值型【数值型又包括double和integer】,逻辑型【TRUE,FALSE,NA】,字符型等),整个房子是数组,地基+一楼是向量,二楼是矩阵,房子和附近居民区构成数据框。

文本转为数值型(用sub替换 --> as.numeric一下)

数值型转为文本(先转为factor形式,再创建标签)

嗯,完结撒花~~~

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值