例如,我有一个数据框:
有没有简单的方法来做到这一点?
df <- data.frame(grp = c(1,1,1,1,1,2,2,2,2,2),
idx = c(1,2,3,4,5,1,2,3,4,5),
val = c(4,6,1,7,2,8,5,3,9,1))
我希望将每行的值除以每个组中第一行的值。我找到的唯一方法是引入一个新的列:
df %>% group_by(grp) %>%
arrange(idx) %>%
mutate(t = ifelse(row_number(idx) == 1, val, 0)) %>%
mutate(val = val / sum(t))
有没有简单的方法来做到这一点?
first
的函数,可以帮助你。df %>% group_by(grp) %>% mutate(val = val/first(val))
。该函数可用于按组对数据进行分组,并计算每组内每个值相对于该组内第一个值的比值。 - Ronak Shah