【问题标题】:Read excel data dynamically in R在R中动态读取excel数据
【发布时间】:2021-07-15 09:29:41
【问题描述】:

我的主目录中有一个 excel 文件。我使用下面的代码读取 excel 文件

df <- read_excel("new_sd.xlsx", sheet = "Sheet1")

我想检查我们是否可以动态读取 excel 文件,类似于我们动态查询 sql 表的方式 例如

我的excel有以下数据

Col1  Col2
1           A
2           A
3           B

在读取上述文件 (df &lt;- read_excel("new_sd.xlsx", sheet = "Sheet1")) 时,我们只能导入 Col2 为 "A" 的数据吗) 。所以输出将是

df 
Col1  Col2
1           A
2           A

【问题讨论】:

  • 为什么不直接删除不需要的行呢? subset(df, Col2 == "A")
  • 我不想一次加载所有 Excel 的想法。假设我们有 10 万条记录。一下子拉出来不好。所以想按过滤器拉它。 :) 在提取所有数据后进行子集化,对吗?这是你的意思吗?
  • 清除重复的thisthis 重新打开
  • 这能回答你的问题吗? Read csv with sqldf

标签: r shiny


【解决方案1】:

如果您想在读取时而不是之后过滤数据,您可以使用sqldf 中的read.csv.sql,它使用 SQL 查询进行过滤,但它仅适用于 csv 数据,无法读取 excel 文件。

如果您可以将 excel 转换为 csv,则可以使用它。

library(sqldf)

#Write the csv
#readr::write_csv(mtcars, 'mtcars.csv')

read.csv.sql('mtcars.csv', sql = 'select * from file where cyl = 6')

#   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#3 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#4 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#7 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6

【讨论】:

  • 哦不错的替代品。有道理
  • Ronak 你确定这个代码read.csv.sql('mtcars.csv', sql = 'select * from file where cyl = 6') 是在自己读取时过滤而不是读取所有数据然后过滤?
  • 这就是他们的帮助页面所说的 - ?read.csv.sql - Read a file into R filtering it with an sql statement. Only the filtered portion is processed by R so that files larger than R can otherwise handle can be accommodated.
  • 您好 Ronak,我尝试使用您的代码。但是得到了这个错误filter_data &lt;- read.csv.sql("reviews_data_13.csv", sql = 'select * from file where ID = 208') Error in connection_import_file(conn@ptr, name, value, sep, eol, skip) : RS_sqlite_import: reviews_data_13.csv line 4 expected 27 columns of data but found 28 Warning message: In file.remove(dbname) : cannot remove file 'C:\Users\VIPRAK~1\AppData\Local\Temp\RtmpI9QDHj\file21d850c3822', reason 'Permission denied
  • 我也复制了你的代码&gt; asd &lt;- read.csv.sql('mtcars.csv', sql = 'select * from file where cyl = 6') &gt; asd [1] mpg cyl disp hp drat wt qsec vs am gear carb &lt;0 rows&gt; (or 0-length row.names)。但返回 0 行?
猜你喜欢
  • 2018-04-30
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多