【问题标题】:Import a CSV file, based on a specific value [duplicate]根据特定值导入 CSV 文件 [重复]
【发布时间】:2019-08-03 02:12:28
【问题描述】:

你好 Stackoverflow 社区,

我有一个很大的 csv 文件,基本上太大而无法放入我的计算机内存中。因此,我只想从 csv 文件中读取必要的数据。例如:

Column_A   Column_B   Column_C
 Jan         1         2018
 Jan         4         2019
 Feb         5         2018
 Mar         3         2018

假设我只对 Column_A == 'Jan' 和 Column_C == "2018" 感兴趣。

是否可以仅加载 Column_A == "Jan" 和 Column_C == 2018 的数据(因此在此示例中,仅应返回第 1 行)。

我找到了另一个解决方案,但不幸的是这是“在内存中”(加载到 R 后的数据处理):

impordata <- read.csv("big_file.csv")
impordata <- subset(impordata,Column_C ==2018 & Column_A =="Jan")

【问题讨论】:

标签: r csv memory


【解决方案1】:

试试sqldf 包:

例如,

# install.packages('sqldf') #if need be

library(sqldf)
fileCSV <- file('path to csv')
sqldf('select * from fileCSV where Column_A = 'Jan' and Column_C = "2018",
file.format = list(header = TRUE, sep = ',')
)

【讨论】:

  • 谢谢!但这只是导入特定的列,而不是基于这些列的值,对吧?
  • c(1,3) 正在导入第一列和第三列,您需要将其更改为适合您数据的索引。
  • 谢谢,很清楚。但是假设我查询 Column_A 和 Column_C(所以是 c(1,3)),我怎样才能只读取例如 Column_A == "Jan" 的数据?
  • 啊,我看错了,让我检查一下。
  • 我已将其更新为使用 sqldf
猜你喜欢
  • 2021-09-21
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多