2016-03-15 2 views
0

Я использую пакет googlesheets для получения данных из Листа Google и хочу добавить имя листа в качестве столбца в data.frame.Извлечь имя Листа Google с пакетом googlesheets

Например, с помощью открытого GapMinder листа:

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

Моя последняя строка делает это вручную, но я хочу сделать это автоматически, то есть, заполнять переменную source_dat с именем листа. (Да, я знаю, что уже есть колонка с этой информацией - это всего лишь пример). Есть ли способ ссылаться на имя активного листа?

ответ

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 
#> ..  ...  ... ...  ...  ...  ...  ... 
+0

Этот второй подход, когда он обращается к атрибутам, замечательный, спасибо! Я открою вопрос GitHub. –