我有结构化的这样一个DF:
Value. Numb.
46. 200
47. 200
55. 200
21. 200
32. 140
23. 140
56. 700
如果重复麻木的价值,我想用它出现的时间,获得了新的DF师麻木/数的结果替代的价值:
Value. Numb.
46. 50
47. 50
55. 50
21. 50
32. 70
23. 70
56. 700
我能怎么做?更好包括使用dplyr的溶液。
library(dplyr)
df %>% group_by(Numb.) %>% mutate(Number=Numb./n()) %>% ungroup()
使用ave
一种方式是建立一个分组变量Numb
并计算每个组的length
和由Numb
划分length
。
with(df, Numb/ave(Numb, Numb, FUN = length))
#[1] 50 50 50 50 70 70 700
一种选择是data.table
。通过分组“麻木。”,由行的数量除以列
library(data.table)
setDT(df)[, Numb. := Numb./.N, Numb.]