Pytanie Jak skorzystać z `.BY` w data.table?


Oto wyjaśnienie w podręczniku .BY

.BY jest listą zawierającą wektor długości 1 dla każdej pozycji w by. Może to być przydatne, gdy by nie jest znane z góry. The by zmienne są również dostępne dla j bezpośrednio po nazwisku; przydatne na przykład dla tytułów wykresów, jeśli j jest poleceniem fabuły lub rozgałęzieniem if() w zależności od wartości zmiennej grupowej.

Mówi "przydatne na przykład dla tytułów wykresów, jeśli j jest poleceniem fabuły lub rozgałęzieniem if() w zależności od wartości zmiennej grupowej. "

Ale nadal nie jestem pewien, kiedy go używać. Jak to wykorzystać .BY?

Czy mógłbyś podać jeden przykład? Wielkie dzięki!


11
2018-03-19 15:51


pochodzenie


Oto przykład SO / real-life: stackoverflow.com/a/22694260/817778 - eddi


Odpowiedzi:


Oto prosty przykład. Używamy .BY zmienna, aby pokazać, do której grupy należy fabuła. Zauważ, że możesz to zrobić również bez użycia .BY, zastępując go gear[1], które będą równoważne.

library(data.table)
mtcars_dt = data.table(mtcars)
mtcars_dt[,
  plot(wt, mpg, main = paste('Gears: ', .BY)),
  gear
]

9
2018-03-19 16:26



zauważ to gear ma już długość jeden w tym ustawieniu, więc nie potrzebujesz gear[1], właśnie gear zrobi - eddi
Masz rację. Myślałem, że gear będzie w podsekcji ramki danych, ale najwyraźniej nie. - Ramnath
nieefektywne jest utrzymywanie go jako wektora, ponieważ ma tę samą wartość, a R w razie potrzeby odda do recyklingu skalar - eddi
Dzięki @Ramnath! To naprawdę fajne! - Bigchao
@Ramnath, czy mógłbyś podać jeden przykład na temat branch with if() depending on the value of a group variable.? wielkie dzięki! - Bigchao