我的df结构如下:
Value. Numb.
46. 200
47. 200
55. 200
21. 200
32. 140
23. 140
56. 700
如果重复使用numb值,我要用 Numb /出现次数的除法结果代替该值 ,以获得新的df:
Value. Numb.
46. 50
47. 50
55. 50
21. 50
32. 70
23. 70
56. 700
我该怎么办?更好的解决方案,包括使用dplyr。
答案 0 :(得分:2)
library(dplyr)
df %>% group_by(Numb.) %>% mutate(Number=Numb./n()) %>% ungroup()
答案 1 :(得分:1)
使用ave
的一种方法是创建一个分组变量Numb
并计算每个组的length
并将Numb
除以length
。 / p>
with(df, Numb/ave(Numb, Numb, FUN = length))
#[1] 50 50 50 50 70 70 700
答案 2 :(得分:1)
一个选项是data.table
。按“数字”分组,将列除以行数
library(data.table)
setDT(df)[, Numb. := Numb./.N, Numb.]