df <- data.frame(name=c('black','black','black','red','red'),
type=c('chair','chair','sofa','sofa','sofa'),
num=c(4,4,12,4,6))
Run Code Online (Sandbox Code Playgroud)
对于每一行,我想计算“type”与该行的 num 值一起出现的次数,然后创建一个新列。所以对于第一行,“chair”和“num”在数据集中出现了两次,所以它被分配了一个 2。对于第二行,同样的事情。对于第 3 行,沙发出现一次,值为 12。
df
# name type num count
# 1 black chair 4 2
# 2 black chair 4 2
# 3 black sofa 12 1
# 4 red sofa 4 1
# 5 red sofa 6 1
Run Code Online (Sandbox Code Playgroud)
ave
在基础 R 中使用,你有
df$count <- with(df, ave(num, name, type, num, FUN=length))
Run Code Online (Sandbox Code Playgroud)
获取 num 的长度,按名称、类型和 num 分组。使用with
以减少打字了一下。
这返回
df
name type num count
1 black chair 4 2
2 black chair 4 2
3 black sofa 12 1
4 red sofa 4 1
5 red sofa 6 1
Run Code Online (Sandbox Code Playgroud)