R使"table"命令与附加的"amount"列一起使用



我正在处理R和类似的数据

data <- data.frame(name=c("dog", "cat", "steak", "dog", "mouse", "cat"), amount=c(1, 2, 2.5, 1, 4, 1))

因此,我的数据看起来像这个

> data
name amount
1   dog    1.0
2   cat    2.0
3 steak    2.5
4   dog    1.0
5 mouse    4.0
6   cat    1.0

现在我想计算我有多少个对象(dog的,cat的,等等(。通常我只使用table-函数。

> table(data$name)
cat   dog mouse steak 
2     2     1     1 

但正如你所想象的,我不只是想数数据帧中有多少条目。我想在amount列中计数。我想要像这个一样的输出

> custom_table(data)
cat   dog mouse steak 
3.0   2.0   4.0   2.5 

有没有一种简单的方法可以得到这种table-函数?

table给出频率计数,我们需要得到按"名称"分组的sum

aggregate(amount ~ name, data, sum)
#   name amount
#1   cat    3.0
#2   dog    2.0
#3 mouse    4.0
#4 steak    2.5

或者如果我们需要一个命名的vector

with(data, tapply(amount, name, FUN = sum))
#  cat   dog mouse steak 
#  3.0   2.0   4.0   2.5 

dplyr中的count

library(dplyr)
data  %>%
count(name, wt = amount)

可能使用dyplr:

library(dyplr)
data %>% group_by(name) %>% tally(amount)

输出:

# A tibble: 4 x 2
name      n
<fct> <dbl>
1 cat     3  
2 dog     2  
3 mouse   4  
4 steak   2.5

最新更新