df <- data.frame(name=c('black','black','black','red','red'),
type=c('chair','chair','sofa','sofa','sofa'),
num=c(4,5,12,4,6))
对于每一行,我想计算“type”出现的次数为num> 4的次数,然后创建一个新列。所以对于第一行,“chair”出现一次,值为5,因此它被赋值为1.对于第二行,同样的事情。对于第3行,沙发出现两次,值> 4。所以所有独特的“类型”最终都会具有相同的价值:
df
# name type num count
# 1 black chair 4 1
# 2 black chair 5 1
# 3 black sofa 12 2
# 4 red sofa 4 2
# 5 red sofa 6 2
答案 0 :(得分:1)
df$count = ave(df$num, df$type, FUN = function(x) sum(x>4))
df$count
#[1] 1 1 2 2 2
答案 1 :(得分:1)
我们可以使用
library(dplyr)
df %>%
group_by(type) %>%
mutate(count = sum(num>4))
或base R
(我们之前评论过)
df$count <- with(df, ave(num > 4, type, FUN = sum))