在日常碰到问题时出现当前“数据类型不能进行操作”的提示时还是有些脑壳疼,所以这次整理了针对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形式,再创建标签)

嗯,完结撒花~~~

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

  1. R语言学习2.1.数值型与字符型

    知识点补充 1.标量:只有一个元素的向量为标量 2.判断数据类型的方法 (1)class(变量) (2)is.数据类型(变量)  #TRUE:是,FALSE:否 1.数值型(numeric) 赋值方式 ...

  2. c语言中长整型变量的值一定大于短整型常量的值,c语言第3讲 常量、变量与标志符 整型、实型、字符型数据.ppt...

    c语言第3讲 常量.变量与标志符 整型.实型.字符型数据 第3讲 常量.变量与标志符 整型.实型.字符型数据 2.1-2.5 常量.变量与标识符 例2.1 符号常量的使用 2. 变量 3. 标识符 标 ...

  3. 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数

    JS程序的基本语法 1,JS是区分大小写的,如:Name和name是不同的: 2,JS中每一条语句,一般以英文的分号(;)结束,在Java中是严格地一定要加上分号,不然会报错:但在JavaScript ...

  4. Python下数值型与字符型类别变量独热编码(One-hot Encoding)实现

    1 OneHotEncoder 2 pd.get_dummies   在数据处理与分析领域,数值型与字符型类别变量的编码是不可或缺的预处理操作.本文基于Python下OneHotEncoder与pd. ...

  5. [初级]Java中的switch对整型、字符型、字符串的具体实现细节

    转载自 [初级]Java中的switch对整型.字符型.字符串的具体实现细节 Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进.到目前为止switch支持这样 ...

  6. 整型转字符型以0补齐

    将整型转为字符型,已知字符串长度,转换时长度不够,以0补齐 如:a=3,已转换成'03',可用如下函数:str(a).zfill(2)

  7. 入门必学 | R语言数值型、字符型及因子型数据之间的差异与转换

    字符型.数值型及因子型数据之间的转换 数据类型的基本知识 不同数据类型之间的差异 数值型与字符型或因子型绘图时的差异 数值型与因子型和字符型的模型构建时的差异 三种数据类型之间进行转换    常用的三 ...

  8. C语言常量(整型、实型、字符型、字符串、符号常量)

    对于C语言常量,该文章有详讲,由于文章太长,可参考如下思维导图和目录,可通过目录选择自己所需要的内容阅读. 直接常量 1.整型常量 整型常量即整数,包括正整数.负整数和零.C语言中,整型常量可以用十进 ...

  9. C语言​-----格式字符、整型、字符型、浮点型

    1.格式字符​ 格式字符是由"%"和字符组成,其作用是将输出的数据转化为指定的格式输出. 格式字符表如下: %d/%i 有符号的十进制整数,i 是老式写法 %u 无符号十进制整数 ...

最新文章

  1. C++实现各种排序算法
  2. [Spring MVC起步]我的第一个MVC
  3. Java EE EJB拦截器教程和示例
  4. 搭建本地Ubuntu14.04源
  5. tkinter message_【莫烦Python】Tkinter 做简单的窗口视窗lt;学习笔记(2)gt;
  6. 计算C(n,0)+C(n,1)+...+C(n,m)--Problem B. Harvest of Apples
  7. docker用gpu的参数_Docker化部署(GPU)
  8. 去掉a标签下划线_编辑器、HTML基础、编码、基础标签
  9. NLog文章系列——入门教程(转)
  10. 使用皮卡(pika)操作RabbitMQ
  11. Windows 系统优化 - 查看并清理临时文件,释放磁盘空间,提高系统运行效率
  12. 极化SAR图像四成分分解
  13. 在Mac上阻止相机和麦克风的方法
  14. PACS—医学影像信息化的基础
  15. Python库之数据可视化---Matplotlib
  16. Java并发编程艺术
  17. Leetcode-892. 三维形体的表面积
  18. 关于“灵图天行者9 PC 导航伴侣零售版 破解版 ”不能用(需要重新注册)的解决办法
  19. xsplit PHP扩展
  20. 鸿蒙 手机 发布时间 2021,2021下半年新机发布时间表_2021下半年新机发布日期

热门文章

  1. ubuntu cd 改变路径
  2. 解析URI与URL之间的区别与联系
  3. 如何使用log4j记录日志
  4. java 根据时间范围自动算间隔_Java根据开始时间结束时间计算时间间隔 x年x月x日...
  5. 计算机网络中对等层,【计算机网络】两个网络模型——OSI参考模型和TCP/IP模型...
  6. 少儿编程150讲轻松学Scratch(三)-关卡类游戏《鱼塘》
  7. xftp 无法连接linux 22端口,解决Xshell不从22端口连接服务器
  8. 让一个文字在背景图片水平居中的方法
  9. 服务器ping不通的解决办法之阿里云云服务器VNC报错Failed to execute /sbin/init
  10. 前端渲染与后端渲染之间的区别?