您好,登录后才能下订单哦!
本篇内容介绍了“R语言数据重塑和导出的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
今天跟大家简单介绍下几个常用的R数据操纵技巧——导入(xlsx)、导出及长宽转换!
数据导入(xlsx)
之前写过一篇关于R导入不同类型数据的方式,但是其中只涉及到.csv、.txt以及直接从剪切板复制。
之所以当时没有介绍xlsx是因为,excel数据文件属于富文本类型,结构相对复杂,需要解除特殊包的支持以及java环境,当时电脑上还没有配置合适的java环境。
后来倒腾一个上午,才算弄完(主要是因为R语言系统版本与Java环境版本需严格一致,否则R语言无法自动探测到Java路径,R语言中的Rjava包便无法加载,而导入xlsx数据需要xlsx包的支持,xlsx包则需要Rjava包的支持)。
所以在导入数据之前,最好先配置好你系统内的java环境,确保其与你的R语言版本一致。
导入xlsx数据所需用到的包:
library("rJava")
library("xlsx")
library("xlsxjars")
以下是导入代码:
data<-read.xlsx("F:\\数据可视化\\数据分析\\R\\R语言学习笔记\\数据整理\\myfile.xlsx",sheetName="file",header=T,encoding='UTF-8')
以上语法中,括号内第一个参数是路径及文件名,sheetName="file"是指定要导入的excel工作薄内的工作表对象,如果你对工作表有命名,一定要指定名称,如果没有,指定为默认的工作表名称(Sheet1、2、3),第三个参数指定导入数据文件的编码方式(UTF-8)。
可以通过head(data)查看数据集的前6条记录。
数据重塑(宽转长):
本例就按照导入的成绩宽数据作为演示案例:
我们想要将以上导入的数据转成长数据,也就是一维表(姓名、科目、分数)
加载数据重塑包:
library("reshape2")
mydata <- melt(data, id.vars = "姓名",variable.name = "科目", value.name = "成绩")
长数据立马就可以呈现出来。
可是以上情况太过理想,通常我们要面对的宽数据会很复杂:
倘若我们面临的输入如上所示,想要得到的结果是,姓名、姓名是两列单独的字段,不同科目合并成单独的一个字段。这种结果就稍显复杂。
不过reshape2包仍然可以轻松应对这种情况:
mydata2 <- melt(data, id.vars = c("姓名","性别"),variable.name = "科目", value.name = "成绩")
只需在指定主字段时,给id.vars = c("姓名","性别")定义多组主字段就可以了,多组字段要使用逗号区隔。
数据读出:
好了,以上数据转换完成,现在我们要将数据导出了,以下暂且介绍两种类型(xlsx暂不介绍,还是同样的原因,富文本需要设定的参数太多,需要很多工具支持,目前还没太搞明白)
导出CSV文件:
write.table (mydata2, file ="F:\\数据可视化\\数据分析\\R\\R语言学习笔记\\数据整理\\newdata.csv", sep =",", row.names =FALSE)
运行以上代码,你的对应路径中瞬间就多出一个名为newdata.csv的数据文件:
导出TXT文件:
write.table(mydata2,file="F:\\数据可视化\\数据分析\\R\\R语言学习笔记\\数据整理\\newdata.txt" , sep =" ", row.names =FALSE,col.names =TRUE, quote =FALSE)
sep指定变量间分隔符,默认为空格,row.names指定是否输出行号,col.names指定是否输出列名,quote指定是否用引号将变量包括。
跑完代码之后,你对应的文件夹目录下就多对出一个名为newdata的TXT格式数据文件,你可以通过导入并查看数据导入格式是否正确:
data3<-read.table("F:\\数据可视化\\数据分析\\R\\R语言学习笔记\\数据整理\\newdata.txt",header=T)
“R语言数据重塑和导出的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。