You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用R从大型文本文件导出纽约州数据的技术问询

解决方法:从大分隔文本文件提取纽约州数据并导出

别担心,作为R新手处理超大文件时遇到卡壳太正常了!我来一步步带你完成从导入、筛选到导出的全流程,保证简单易懂:

第一步:正确导入你的^分隔文本文件

因为你的文件用的是^作为分隔符,默认的read.csv(逗号分隔)肯定不好用,咱们用专门指定分隔符的函数:

基础导入法(适合新手)

# 用read.delim导入,指定分隔符为^,header=TRUE表示文件第一行是表头
# 替换成你自己的文件名,比如"all_states_data.txt"
ny_data_raw <- read.delim("你的文件名.txt", sep = "^", header = TRUE, stringsAsFactors = FALSE)
  • 如果你不确定文件有没有表头,把header改成FALSE就行;
  • stringsAsFactors=FALSE是为了避免把文本列自动转成因子,后续筛选更省心。

大文件高效导入法(推荐)

你的文件体积很大,用data.table包的fread速度会快很多,处理几十万条记录毫无压力:

# 先安装data.table包(只需要安装一次)
install.packages("data.table")
library(data.table)

# 导入文件,同样指定分隔符^
ny_data_raw <- fread("你的文件名.txt", sep = "^", header = TRUE)

新手小技巧:找不到文件路径?

直接用RStudio的文件选择对话框,不用手动输路径:

ny_data_raw <- read.delim(file.choose(), sep = "^", header = TRUE, stringsAsFactors = FALSE)
# 用fread的话就是:ny_data_raw <- fread(file.choose(), sep = "^", header = TRUE)

第二步:筛选纽约州的记录

首先得确认你数据里“州”对应的列名是什么(比如StatestateState_Code),可以先看一下数据的前几行:

# 查看前5行数据,确认列名和州的取值(比如是"NY"还是"New York")
head(ny_data_raw)
# 或者直接列所有列名
colnames(ny_data_raw)

确认后就可以筛选了,假设列名是State,取值是"NY"

# 只保留State列等于"NY"的行
ny_only_data <- ny_data_raw[ny_data_raw$State == "NY", ]

如果州的全称是"New York",就把"NY"换成"New York"就行。

第三步:导出筛选后的文件

现在你已经得到了纽约州的20万条记录,接下来导出成单独的文件:

保持原分隔符导出(^分隔的txt)

如果你需要保留原来的^分隔符,用write.table

# 导出为^分隔的txt文件,row.names=FALSE去掉行号,quote=FALSE避免给文本加引号破坏格式
write.table(ny_only_data, "纽约州筛选数据.txt", sep = "^", row.names = FALSE, quote = FALSE)

导出为CSV(适合地理编码工具)

如果后续地理编码工具更兼容CSV格式,用write.csv

write.csv(ny_only_data, "纽约州筛选数据.csv", row.names = FALSE)

为什么之前用write.csv出错?

大概率是因为你还没成功导入文件,导致变量不存在!先确保第一步的导入操作成功,能在RStudio的环境面板里看到ny_data_raw这个数据框,再进行后续操作就不会报错啦。

内容的提问来源于stack exchange,提问作者Till

火山引擎 最新活动