Justyna S. - 7 months ago 55

R Question

I have the following table

`DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=rep(4:6, 3))`

I want to count how many rows meet the condition (

`y==3 & v==5`

I can get the rows that meet the condition, so I could save them and then count the rows. However, I know it can be done more efficiently with

`.N`

`require(data.table)`

keycols = c("y","v")

setkeyv(DT,keycols)

DT[J(3,5)] # This gets the subset I am interested in

DT[ , `:=` (count = .N), by = J(3,5)] # This is one of the multiple unsuccessful ways I have been trying to count the rows.

Anyone has any idea on how to make the last line work?

Answer

How about just

```
DT[.(3,5), .N]
# [1] 3
## These are also equivalent
## DT[J(3,5), .N]
## DT[list(3,5), .N]
```

Source (Stackoverflow)