【问题标题】:Read cell values without formatting into R with googlesheets使用 googlesheets 读取单元格值而不格式化为 R
【发布时间】:2015-10-09 19:38:13
【问题描述】:

希望能够使用 googlesheets 包将 Google 表格单元格值读入 R,但不应用任何单元格格式(例如逗号分隔符、百分比转换等)。

已尝试不指定范围的 gs_read(),它使用 gs_read_csv(),它将“通过 exportcsv 链接从 Sheets API 请求数据”。找不到一种方法来告诉它在不应用格式的情况下提供基础单元格值。

同样,尝试 gs_read() 并指定一个范围,该范围使用 gs_read_cellfeed()。但是找不到一种方法来表明我想要未格式化的单元格值。

注意:我不关注任何单元格中的公式,只关注未应用任何格式的值。

示例: (看起来我无法发布图像图像) 这是示例 Google 表格的屏幕截图: https://www.dropbox.com/s/qff05u8nn3do33n/Screenshot%202015-07-26%2008.42.58.png?dl=0 第一列和第三列是未应用格式的数字,第二列应用逗号分隔千位,第四列应用百分比格式。

使用以下代码阅读此表:

library(googlesheets)
gs <- gs_title("GoogleSheets Test")
ws <- gs_read(gs, ws = "Sheet1")

产量:

> str(ws)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   3 obs. of  4 variables:
 $ Number         : int  123456 123457 123458
 $ Number_wFormat : chr  "123,456" "123,457" "123,458"
 $ Percent        : num  0.123 0.234 0.346
 $ Percent_wFormat: chr  "12.34%" "23.45%" "34.56%"

希望能够读取已应用格式的工作表(ala 列 2 和 4),但读取未格式化的值(ala 列 1 和 3)。

【问题讨论】:

  • 从 gs_read() 返回的结果...它们以何种方式受到单元格格式的影响? IE。返回值有问题怎么办?能给我举个例子吗? Sheets API 不提供对单元格格式的访问:“单元格元素的字面值是单元格的计算值,未应用格式。如果单元格包含公式,则在此处给出计算值。Sheets API 没有格式的概念,因此无法操纵单元格的格式。” (顺便说一句,我是 googlesheets 的作者)。
  • @jennybryan,首先感谢您编写 googlesheets 包 - 做得很好。接下来,我更新了我的问题,并提供了一个详细的示例来演示该问题。

标签: r google-sheets google-spreadsheet-api r-googlesheets


【解决方案1】:

在这一点上,我认为最好的办法是像这样修复导入的数据:

> ws$Number_fixed <- type.convert(gsub(',', '', ws$Number_wFormat))
> ws$Percent_fixed <- type.convert(gsub('%', '', ws$Percent_wFormat)) / 100
> str(ws)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   3 obs. of  6 variables:
 $ Number         : int  123456 123457 123458
 $ Number_wFormat : chr  "123,456" "123,457" "123,458"
 $ Percent        : num  0.123 0.234 0.346
 $ Percent_wFormat: chr  "12.34%" "23.45%" "34.56%"
 $ Number_fixed   : int  123456 123457 123458
 $ Percent_fixed  : num  0.123 0.234 0.346

我曾希望使用readr 的函数进行后处理会是一个不错的答案,但看起来percentages"currency" style numbers 在那里也是未解决的问题。

我有opened an issuegooglesheets 中更好地解决这个问题,不管怎样。

【讨论】:

  • 您寻找的未格式化数字存在于 XML 中,它不是我当前导出的部分。因此,这是改进 googlesheets 的另一个富有成效的途径——与现有的formula support 请求有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
相关资源
最近更新 更多