![](/style/images/good.png)
![](/style/images/bad.png)
R语言 | 读写txt、csv、excel文件
source link: http://mp.weixin.qq.com/s?__biz=MzI1MTE2ODg4MA%3D%3D&%3Bmid=2650074157&%3Bidx=1&%3Bsn=53220e356be453f78bbe58ca54be5e4a
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^
R语言代码略带凌乱,讲真的还是更喜欢Python代码简洁。不过好几年不琢磨R语言,对R语言代码的凌乱美有些新奇,很好玩,这也许就是久别胜新欢吧。
而且R语言的文本分析生态也挺全的,Python与R结合起来,完美~
R语言读写操作
本章文件读写用到的包有
-
readtext
-
readr
-
readxl
-
writexl
其中readr、readxl均为tidyverse内的子包,做数据分析一般绕不开tidyverse
tidyverse含有的包
library(tidyverse) tidyverse::tidyverse_packages()
## [1] "broom" "cli" "crayon" "dbplyr" "dplyr" ## [6] "forcats" "ggplot2" "haven" "hms" "httr" ## [11] "jsonlite" "lubridate" "magrittr" "modelr" "pillar" ## [16] "purrr" "readr" "readxl" "reprex" "rlang" ## [21] "rstudioapi" "rvest" "stringr" "tibble" "tidyr" ## [26] "xml2" "tidyverse"
预备知识: tibble包
tibble比R内置的数据框的易用,默认不会将字符串转化为因子型。选择tibble数据的子集,返回的结果仍是tibble类型
-
创建数据框: tibble()
-
强制转化数据框: as_tibble()
创建数据框
#tibble::tibble意识是导入tibble包的tibble函数 df <- tibble::tibble( x = c(1,2,3,4), name=c("张三", "李四", "王五", "赵六"), age=c(25, 23, 30, 18) ) df
colnames(df)
## [1] "x" "name" "age"
rownames(df)
## [1] "1" "2" "3" "4"
读写实战
安装
install.packages(c("readtext","readr","readxl", "writexl"))
读取文件相关操作
读取 包 代码 功能 txt readtext readtext() 读取txt文件 csv readr read_csv() 读取csv文件 excel readxl read_excel() 读取xls、xlsx文件读取csv
默认csv文件为utf-8编码
#读取csv df <- readr::read_csv('data/waimai8k.csv') #为了展示的更好看一些 df <- DT::datatable(df) df
读取excel文件
df2 <- readxl::read_excel('data/data.xlsx') df2
读txt
document <- readtext::readtext('data/三体.txt') document
#全部显示 #document['text'] #显示前200个字符 substr(document['text'], 1, 200)
## [1] "\n------------\n\n第1章 科学边界(1)\n\n 恋上你看书网 630bookla ,最快更新三体(全集)最新章节!\n\n 汪淼觉得,来找他的这四个人是一个奇怪的组合:两名警察和两名军人,如果那两个军人是武警还算正常,但这是两名陆军军官。\n\n 汪淼第一眼就对来找他的警察没有好感。其实那名穿警服的年轻人还行,举止很有礼貌,但那位便衣就让人讨厌了。这人长得五大三粗,一脸横肉,穿"
document[['doc_id']]
## [1] "三体.txt"
#全部显示 #document[['text']] #显示前200个字符 substr(document[['text']], 1, 200)
## [1] "\n------------\n\n第1章 科学边界(1)\n\n 恋上你看书网 630bookla ,最快更新三体(全集)最新章节!\n\n 汪淼觉得,来找他的这四个人是一个奇怪的组合:两名警察和两名军人,如果那两个军人是武警还算正常,但这是两名陆军军官。\n\n 汪淼第一眼就对来找他的警察没有好感。其实那名穿警服的年轻人还行,举止很有礼貌,但那位便衣就让人讨厌了。这人长得五大三粗,一脸横肉,穿"
导入多个txt文件
-
list.files() 某路径下多个文件
#获取文件列表 files <- list.files('data/txts', full.names=TRUE) head(files)
## [1] "data/txts/三孚股份2017.txt" "data/txts/三棵树2017.txt" ## [3] "data/txts/三江购物2017.txt" "data/txts/上海九百2017.txt" ## [5] "data/txts/上海机电2017.txt" "data/txts/上海物贸2017.txt"
texts <- c() doc_ids <- c() for (file in files) { document <- readtext::readtext(file, encoding = 'gbk') doc_ids <- c(doc_ids, document[['doc_id']]) texts <- c(texts, document[['text']]) #文本全部导入到tibble #texts <- c(texts, substr(document[['text']], 1, 50)) #截取前50个字符的文本,方便显示 } df <- tibble::tibble( doc_ids=doc_ids, texts = texts ) head(df)
写入文件相关操作
写入 包 代码 功能 csv readr write_csv() 将数据写入csv文件 excel writexl write_excel() 将数据写入excel存入excel
使用writexl包的write_xlsx(x, path)
-
x: tibble表数据
-
path: xlsx文件路径
#写入xlsx writexl::write_xlsx(df, "output/reports.xlsx")
存入csv
使用readr包的write_csv(x, path)
-
x: tibble表数据
-
path: csv件路径
#写入csv readr::write_csv(df, "output/reports.csv")
往期文章
后 台回复关键词【 R读写 】获取本文代码和 数据
“ 分享 ”和“ 在看 ”是更好的支持!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK