R-每组增加十进制增量

时间:2018-11-01 17:20:54

标签: r

我有这样的数据:

User | 
--------------
 1   | 
 1   | 
 2   | 
 2   |
 2   | 

并希望为每个用户/组添加一个十进制增量,如下所示:

User | value 
--------------
 1   | 0.0
 1   | 0.2
 2   | 0.0
 2   | 0.2
 2   | 0.4 

我尝试过:

df %>% group_by(User) %>% mutate(value = row_number())

但是,当然row_number不会添加任何小数。 此外,我对seq()做了一些实验,但是我并没有实现总是通过用户/组的相应长度

1 个答案:

答案 0 :(得分:3)

我们可以按顺序分组

library(dplyr)
df1 %>%
   group_by(User) %>%
   mutate(value = seq(0, length.out = n(), by = 0.2))
# A tibble: 5 x 2
# Groups:   User [2]
#   User value
#  <dbl> <dbl>
#1     1   0  
#2     1   0.2
#3     2   0  
#4     2   0.2
#5     2   0.4

或与row_number()

df1 %>%
   group_by(User) %>% 
   mutate(value = 0.2 * (row_number()-1))

数据

df1 <- data.frame(User = rep(c(1, 2), c(2, 3)))