Мы также можем использовать dplyr
.
Во-первых, некоторые данные:
df <- data.frame(x = rep(1:6, rep(c(1, 2, 3), 2)), year = 1993:2004, month = c(1, 1:11))
Теперь число:
library(dplyr)
count(df, year, month)
#piping
df %>% count(year, month)
Мы также можем используйте немного более длинную версию с трубкой и функцию n()
:
df %>%
group_by(year, month) %>%
summarise(number = n())
или функцию `tally:
df %>%
group_by(year, month) %>%
tally()
__radd__
вызывается только в том случае, если у левого объекта нет метода __add__
, или этот метод не знает, как добавить два объекта (которые он помещает, возвращая NotImplemented). Оба класса имеют метод __add__
, который не возвращает NotImplemented. Поэтому метод __radd__
никогда не будет вызван.
Эти функции
blockquote>__radd__
вызывается только в том случае, если левый операнд не поддерживает соответствующую операцию, а операнды имеют разные типы. Например,class X: def __init__(self, num): self.num = num
class Y: def __init__(self, num): self.num = num def __radd__(self, other_obj): return Y(self.num+other_obj.num) def __str__(self): return str(self.num)
>>> x = X(2) >>> y = Y(3) >>> print(x+y) 5 >>> >>> print(y+x) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-60-9d7469decd6e> in <module>() ----> 1 print(y+x) TypeError: unsupported operand type(s) for +: 'Y' and 'X'