R 计算特定值的实例
R counting instances of a specific value
我有一个data.frame如下
df <- read.table(header = T, text = "Item.Nbr supply demand
1 82078-002 1 1
2 82078-007 2 0
3 82078-007 4 0
4 82078-007 0 0
5 82078-007 0 7")
> df
Item.Nbr supply demand
1 82078-002 1 1
2 82078-007 2 0
3 82078-007 4 0
4 82078-007 0 0
5 82078-007 0 7
我想统计Item.Nbr有多少次供需为0,我还想知道有多少次供需都为0Item.Nbr
Item.Nbr 0_supply 0_demand 0_both
1 82078-002 0 0 0
2 82078-007 2 3 1
使用基数 R aggregate
:
aggregate(. ~ Item.Nbr, data=transform(df, both=supply+demand), FUN=function(x) sum(x==0) )
#or
aggregate(
cbind(supply,demand,both=supply+demand) ~ Item.Nbr, data=df, FUN=function(x) sum(x==0)
)
# Item.Nbr supply demand both
#1 82078-002 0 0 0
#2 82078-007 2 3 1
或者在 dplyr
如果这是你的包(向@akrun 点头):
df %>%
mutate(both= supply+demand) %>%
group_by(Item.Nbr) %>%
summarise_each(funs(sum(!.)))
#Source: local data frame [2 x 4]
#
# Item.Nbr supply demand both
#1 82078-002 0 0 0
#2 82078-007 2 3 1
我有一个data.frame如下
df <- read.table(header = T, text = "Item.Nbr supply demand
1 82078-002 1 1
2 82078-007 2 0
3 82078-007 4 0
4 82078-007 0 0
5 82078-007 0 7")
> df
Item.Nbr supply demand
1 82078-002 1 1
2 82078-007 2 0
3 82078-007 4 0
4 82078-007 0 0
5 82078-007 0 7
我想统计Item.Nbr有多少次供需为0,我还想知道有多少次供需都为0Item.Nbr
Item.Nbr 0_supply 0_demand 0_both
1 82078-002 0 0 0
2 82078-007 2 3 1
使用基数 R aggregate
:
aggregate(. ~ Item.Nbr, data=transform(df, both=supply+demand), FUN=function(x) sum(x==0) )
#or
aggregate(
cbind(supply,demand,both=supply+demand) ~ Item.Nbr, data=df, FUN=function(x) sum(x==0)
)
# Item.Nbr supply demand both
#1 82078-002 0 0 0
#2 82078-007 2 3 1
或者在 dplyr
如果这是你的包(向@akrun 点头):
df %>%
mutate(both= supply+demand) %>%
group_by(Item.Nbr) %>%
summarise_each(funs(sum(!.)))
#Source: local data frame [2 x 4]
#
# Item.Nbr supply demand both
#1 82078-002 0 0 0
#2 82078-007 2 3 1