подставить значение в соответствии с определенным условием в R - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть 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 голосов
/ 05 февраля 2019

Одним из способов использования ave является создание групповой переменной Numb и вычисление length каждой группы и деление Numb на length.

with(df, Numb/ave(Numb, Numb, FUN = length))
#[1]  50  50  50  50  70  70 700
0 голосов
/ 05 февраля 2019

Один вариант - data.table.Сгруппировать по 'Numb.', Разделить столбец на количество строк

library(data.table)
setDT(df)[, Numb. := Numb./.N, Numb.]
0 голосов
/ 05 февраля 2019
library(dplyr)
df %>% group_by(Numb.) %>% mutate(Number=Numb./n()) %>% ungroup()
...