I've got a dataframe consisting of a group and 2 value columns, as such:
group val1 val2
A 5 3
A 2 4
A 3 1
B 3 6
B 2 1
B 0 2
I want to work out the number of rows where val1 > val2, split by subset. Initially I hardcoded this per subgroup with:
number_a <- nrow(subset(df, group=="A" & val1 > val2))
number_b <- nrow(subset(df, group=="B" & val1 > val2))
What's the proper way of automating this? I tried using the split()
function but I couldn't work out how to pass in both val1
and val2
column.
Pretty straight forward using
data.table
If you want the number of rows
If you looking for
split
,apply
combinations in base R, could also tryOr using
tapply
(also from base R)If you want the rows themselves
Or very simple with base R too
Or