根据R中的特定条件替换值

时间:2019-02-05 10:13:11

标签: r division

我的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。

3 个答案:

答案 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.]