2015-09-10 5 views
5

mam pewne dane jak poniżej:zebrać z tidyr: pozycja musi być pomiędzy 0 a n błędu

x.row10 <- setNames(data.frame(letters[1:3],1:3,2:4,3:5,4:6,5:7,6:8,7:9), 
        c("names",2004:2009,2012)) 
# names 2004 2005 2006 2007 2008 2009 2012 
#1  a 1 2 3 4 5 6 7 
#2  b 2 3 4 5 6 7 8 
#3  c 3 4 5 6 7 8 9 

teraz mogę uczynić je długo z gather() z pakietu tidyr pisząc:

x.row10 %>% gather(Year, Val, -names) 

Ale gdy używam

x.row10 %>% gather(Year, Val, c(2004:2009,2012)) 

który jest moim intuicyjnego wyboru, pojawia się błąd m essage

Error: Position must be between 0 and n

Jak to możliwe i jak można to rozwiązać?

+4

Dodaj odwrócone, pojedyncze apostrofy jak w '' 'df%>% zebrania (rok, Val, C (' 2004': '2009',' 2012')) '' 'lub użyć właściwego kolumnach nazwy. 'gather' uważa, że ​​próbujesz wybrać wskaźniki kolumn, które są poza zasięgiem. –

+0

Otrzymuję komunikat o błędzie: Błąd: Wszystkie dane wejściowe select() muszą być zgodne z całkowitymi pozycjami kolumn. Następujące informacje: * c ("2004": "2009", "2012") podczas korzystania z odsłonięć – uncool

+2

To działa dla mnie. 'df' powinno być' x.row10' ofcourse –

Odpowiedz

4
x.row10 %>% gather(Year, Val, c(2:8)) 
+2

Albo 'x.row10' lub' df', nie oba. –

+1

@ StevenBeaupré dobry punkt, dzięki – HubertL

3

Pytanie zostało oznaczone jako rozwiązane, ale myślę, że może warto zamieścić moją odpowiedź. Sposób, w jaki postępuje David Arenburg, jest właściwy. Potrzebujesz exakt podkładek pod mysz, aby działał. Jeśli używasz cudzysłowie nudna jak w komentarzu nie, masz ten sam błąd jak on:

Error: All select() inputs must resolve to integer column positions. 
The following do not: 
* c("2004":"2009", "2012") 

dla niemieckich użytkownik keybord: Jeśli nie wiesz (jak ja kilka minut temu :-)) jak Typ backstick:

"Shift + the key on the right side of ß" and after that "spacebar".

Powiązane problemy