0

我正在使用该googlesheets包从 Google 表格中获取数据,并希望将表格名称作为列附加到 data.frame 中。

例如,使用公共 Gapminder 表:

library(googlesheets)
library(dplyr)
my_dat <- gs_gap() %>% # register public Gapminder practice sheet
  gs_read(ws = 1) %>%
  mutate(source_dat = "Africa")

我的最后一行手动执行此操作,但我想自动执行此操作,即source_dat使用工作表名称填充变量。(是的,我知道已经有一个包含该信息的列 - 这只是一个示例)。有没有办法引用活动工作表名称?

4

1 回答 1

3

现在只有单元格提要读取功能将工作表名称作为属性附加。第二个解决方案显示了如何使用它。如果您在 github 上打开问题,我可以将其添加到所有读取方法中。

您还可以像第一个解决方案一样提前存储 ws 的名称。

library(googlesheets)
library(dplyr)

ws <- "Africa"
my_dat <- gs_gap() %>% # register public Gapminder practice sheet
  gs_read(ws = ws) %>%
  mutate(source_dat = ws)
#> Accessing worksheet titled 'Africa'.
#> No encoding supplied: defaulting to UTF-8.
my_dat
#> Source: local data frame [624 x 7]
#> 
#>    country continent  year lifeExp      pop gdpPercap source_dat
#>      (chr)     (chr) (int)   (dbl)    (int)     (dbl)      (chr)
#> 1  Algeria    Africa  1952  43.077  9279525  2449.008     Africa
#> 2  Algeria    Africa  1957  45.685 10270856  3013.976     Africa
#> 3  Algeria    Africa  1962  48.303 11000948  2550.817     Africa
#> 4  Algeria    Africa  1967  51.407 12760499  3246.992     Africa
#> 5  Algeria    Africa  1972  54.518 14760787  4182.664     Africa
#> 6  Algeria    Africa  1977  58.014 17152804  4910.417     Africa
#> 7  Algeria    Africa  1982  61.368 20033753  5745.160     Africa
#> 8  Algeria    Africa  1987  65.799 23254956  5681.359     Africa
#> 9  Algeria    Africa  1992  67.744 26298373  5023.217     Africa
#> 10 Algeria    Africa  1997  69.152 29072015  4797.295     Africa
#> ..     ...       ...   ...     ...      ...       ...        ...

## currently only gs_read_cellfeed stores ws_title as an attribute
my_dat <- gs_gap() %>% # register public Gapminder practice sheet
  gs_read_cellfeed() %>% 
  {
    ws <- attr(., "ws_title")
    gs_reshape_cellfeed(.) %>% 
    mutate(source_dat = ws)      
  }
#> Accessing worksheet titled 'Africa'.
my_dat
#> Source: local data frame [624 x 7]
#> 
#>    country continent  year lifeExp      pop gdpPercap source_dat
#>      (chr)     (chr) (int)   (dbl)    (int)     (dbl)      (chr)
#> 1  Algeria    Africa  1952  43.077  9279525  2449.008     Africa
#> 2  Algeria    Africa  1957  45.685 10270856  3013.976     Africa
#> 3  Algeria    Africa  1962  48.303 11000948  2550.817     Africa
#> 4  Algeria    Africa  1967  51.407 12760499  3246.992     Africa
#> 5  Algeria    Africa  1972  54.518 14760787  4182.664     Africa
#> 6  Algeria    Africa  1977  58.014 17152804  4910.417     Africa
#> 7  Algeria    Africa  1982  61.368 20033753  5745.160     Africa
#> 8  Algeria    Africa  1987  65.799 23254956  5681.359     Africa
#> 9  Algeria    Africa  1992  67.744 26298373  5023.217     Africa
#> 10 Algeria    Africa  1997  69.152 29072015  4797.295     Africa
#> ..     ...       ...   ...     ...      ...       ...        ...
于 2016-03-18T19:22:40.497 回答