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

現在、セル フィード読み取り関数のみが、ワークシート名を属性として添付します。2 番目の解決策は、それをどのように使用できるかを示しています。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 に答える