根据R中的特定条件的值代入

问题描述 投票:0回答:3

我有结构化的这样一个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的溶液。

r division
3个回答
2
投票
library(dplyr)
df %>% group_by(Numb.) %>% mutate(Number=Numb./n()) %>% ungroup()

1
投票

使用ave一种方式是建立一个分组变量Numb并计算每个组的length和由Numb划分length

with(df, Numb/ave(Numb, Numb, FUN = length))
#[1]  50  50  50  50  70  70 700

1
投票

一种选择是data.table。通过分组“麻木。”,由行的数量除以列

library(data.table)
setDT(df)[, Numb. := Numb./.N, Numb.]
© www.soinside.com 2019 - 2024. All rights reserved.