快看:使用R语言将多个txt汇总到一个csv文件中
使用R语言,对多个文件夹内的数百个txt汇总到一个csv文件内。数据集点击阅读原文获取
(资料图片)
01-21年,全国各地市政府工作报告数据集。
任务分解1.使用list.files获取文件路径列表2.定义需要的函数-使用readtext::readtext()函数读取报告文本-年份函数、省份函数3. 对每个文件路径,根据2得到三个字段信息,构造tibble结构;4.步骤2和步骤3使用bind_cols合并成一个tibble5.readr::write_csv()函数存至data.csv6.审查data.csv
数据存在province文件内, 该点击下载该数据集
1. txt路径列表使用 list.files函数查看
文件夹路径列表文件路径列表province内的文件夹路径列表
library(tidyverse)dirs<-list.files("province",full.names=TRUE)head(dirs)##[1]"province/上海""province/云南""province/内蒙古""province/北京"##[5]"province/吉林""province/四川"
所有省份文件夹内的文件路径列表
files<-list.files(dirs,full.names=TRUE)head(files)##[1]"province/上海/2003年上海政府工作报告.txt"##[2]"province/上海/2004年上海政府工作报告.txt"##[3]"province/上海/2005年上海政府工作报告.txt"##[4]"province/上海/2006年上海政府工作报告.txt"##[5]"province/上海/2007年上海政府工作报告.txt"##[6]"province/上海/2008年上海政府工作报告.txt"
共有617个txt文件
length(files)##[1]6172.1 readtext读取txt
使用 readtext::readtext 批量读取 多个txt
txts_df<-readtext::readtext(files)head(txts_df)##readtextobjectconsistingof6documentsand0docvars.###Description:df[6×2]##doc_idtext####12003年上海政府工作报告.txt"\"各位代表,现在\"..."## 2 2004年上海政府工作报告.txt "\"各位代表:\n\n \"..."## 3 2005年上海政府工作报告.txt "\"各位代表:\n\n 现\"..."## 4 2006年上海政府工作报告.txt "\"各位代表:\n 上海\"..."##52007年上海政府工作报告.txt"\"政府工作报告\n\"..."##62008年上海政府工作报告.txt"\"\n\t政府工作报告\n\n\"..."
检查text字段长度,是否为617.
length(txts_df[["text"]])##[1]6172.2 定义功能函数
数据整理到一个csv,我们想保存四个字段,分别是
txt文件名年份省(市)名工作报告内容年份和省份需要通过定义函数实现~
s<-basename("province/上海/2003年上海政府工作报告.txt")substr(s,1,4)##[1]"2003"
year_func<-function(filepath){year<-filepath%>%basename()%>%substr(1,4)return(year)}name_func<-function(file){file<-basename(file)name<-gsub("政府工作报告.txt","",file)name<-stringr::str_sub(name,start=6)return(name)}file<-"province/上海/2003年上海政府工作报告.txt"year_func(file)name_func(file)##[1]"2003"##[1]"上海"
txts_df 是一个特殊的tibble数据类型。现在需要构造年份、省份函数,获取另外一个tibble。
year_province_df<-tibble(year=year_func(txts_df$doc_id),province=lapply(txts_df$doc_id,name_func)%>%unlist())head(year_province_df)###Atibble:6×2##yearprovince##4. 合并两个tibble##12003上海##22004上海##32005上海##42006上海##52007上海##62008上海
cbind_rows()合并两个tibble
res_df<-bind_cols(year_province_df,txts_df)head(res_df)###Atibble:6×4##yearprovincedoc_idtext##5. 存入csv##12003上海2003年上海政府工作报告.txt"各位代表,现在,我代表上海市人…## 2 2004 上海 2004年上海政府工作报告.txt "各位代表:\n\n 现在,我代表上…## 3 2005 上海 2005年上海政府工作报告.txt "各位代表:\n\n 现在,我代表上海…## 4 2006 上海 2006年上海政府工作报告.txt "各位代表:\n 上海市国民经济和社…##52007上海2007年上海政府工作报告.txt"政府工作报告\n――2007年1月2…##62008上海2008年上海政府工作报告.txt"\n\t政府工作报告\n\n\t——2008年1月2…
使用 write.table(x, file, sep) 写入data.csv
x 待存储数据对象file csv文件路径delim 分割符readr::write_csv(x=res_df,file="data.csv",col_names=T)6. 检查data.csv
尝试读取 data.csv
df<-readr::read_csv("data.csv")##Rows:617Columns:4##──Columnspecification────────────────────────────────────────────────────────##Delimiter:","##chr(3):province,doc_id,text##dbl(1):year####ℹUse`spec()`toretrievethefullcolumnspecificationforthisdata.##ℹSpecifythecolumntypesorset`show_col_types=FALSE`toquietthismessage.
head(df)###Atibble:6×4##yearprovincedoc_idtext##实验数据##12003上海2003年上海政府工作报告.txt"各位代表,现在,我代表上海市人民…## 2 2004 上海 2004年上海政府工作报告.txt "各位代表:\n\n 现在,我代表上海…## 3 2005 上海 2005年上海政府工作报告.txt "各位代表:\n\n 现在,我代表上海…## 4 2006 上海 2006年上海政府工作报告.txt "各位代表:\n 上海市国民经济和社…##52007上海2007年上海政府工作报告.txt"政府工作报告\n――2007年1月2…##62008上海2008年上海政府工作报告.txt"\n\t政府工作报告\n\n\t——2008年1月2…
点击阅读原文,跳转进入博客界面,查看数据获取方式。
精选文章从符号到嵌入:计算社会科学的两种文本表示
推荐 | 社科(经管)文本分析快速指南
使用cntext训练Glove词嵌入模型
认知的测量 | 向量距离vs语义投影
Wordify | 发现和区分消费者词汇的工具
在jupyter中显示pdf内容
改善matplotlib在jupyter内的渲染效果
EmoBank | 中文维度情感词典
Asent库 | 英文文本数据情感分析
karateclub库 | 计算社交网络中节点的向量
视频专栏课 | Python网络爬虫与文本分析
PNAS | 文本网络分析&文化桥梁Python代码实现
Wordify | 发现和区分消费者词汇的工具
BERTopic库 | 使用预训练模型做话题建模
tomotopy | 速度最快的LDA主题模型
文本分析方法在《管理世界》(2021.5)中的应用
Wow~70G上市公司定期报告数据集
100min视频 | Python文本分析与会计
在jupyter内运行R代码
blogdown包 | 使用R语言维护Hugo静态网站
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...