计算重复出现的次数 [R]

NBC*_*NBC 1 r dataframe

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)

lmo*_*lmo 7

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)