У меня есть такой фрейм данных:
measure <- rnorm(1:100, mean = 5, sd = 2)
year <- c(rep(2015,25),rep(2016,25),rep(2015,25),rep(2016,25))
individuals <- c(rep('a',50), rep('b',50))
df <- as.data.frame(measure, year, individuals)
Я хочу добавить столбец, отображающий процент nrow(df)
в соответствии со столбцом «индивидуумы».То есть столбец, начинающийся с 0 и заканчивающийся на 100, когда он достигает последней строки, где встречается df$individuals == 'a'
.Затем он должен начинаться до тех пор, пока не произойдет df$individuals == 'b'
и т. Д.
Я попробовал следующее:
fun1 <- function(x) 100*cumsum(x) / sum(x)
df[, percent := fun1(1:nrow(df)), by = df$individuals]
, но это не работает.Кажется, мне нужно подмять свой фрейм данных на individuals
, но я изо всех сил пытаюсь найти, где и как я должен к нему.