小编Sci*_*ens的帖子

新变量,指示第一次出现特定值

我想创建一个新变量,指示对变量值的第一次特定观察.

在下面的示例数据集中,我希望有一个新变量"firstna",对于此玩家的第一次观察"NA",该变量为"1".

game_data <- data.frame(player = c(1,1,1,1,2,2,2,2), level = c(1,2,3,4,1,2,3,4), points = c(20,NA,NA,NA,20,40,NA,NA))

game_data
  player level points
1      1     1     20
2      1     2     NA
3      1     3     NA
4      1     4     NA
5      2     1     20
6      2     2     40
7      2     3     NA
8      2     4     NA
Run Code Online (Sandbox Code Playgroud)

生成的数据框应如下所示:

game_data_new <- data.frame(player = c(1,1,1,1,2,2,2,2), level = c(1,2,3,4,1,2,3,4), points = c(20,NA,NA,NA,20,40,NA,NA), firstna = c(0,1,0,0,0,0,1,0))

game_data_new
  player level points firstna
1      1     1     20       0
2      1     2     NA       1
3 …
Run Code Online (Sandbox Code Playgroud)

r transformation panel hierarchical-data dplyr

4
推荐指数
2
解决办法
136
查看次数

将“x 小时 y 分钟”的时间格式转换为数字

我有一个变量指示事件发生后的时间,它的编码如下:

time_since_event <- c("18 m", "56 m", "2 h 30 m", "18 h 2 m")
Run Code Online (Sandbox Code Playgroud)

我希望它是数字,并始终表示事件发生后的分钟数:

time_since_event_min <- c(18,56,150,1082)
Run Code Online (Sandbox Code Playgroud)

time timestamp r transform minute

2
推荐指数
1
解决办法
46
查看次数

带有前值+1的FIll零

我有一个按用户分组的记录.在变量"day"有一些0,我想按顺序(=前一个值+1)替换它.

data <- data.frame(user = c(1,1,1,2,2,2,2,2), day = c(170,0,172,34,35,0,0,38))

data
  user day
1    1 170
2    1   0
3    1 172
4    2  34
5    2  35
6    2   0
7    2   0
8    2  38
Run Code Online (Sandbox Code Playgroud)

我想要以下内容:


data_new
  user day
1    1 170
2    1 171
3    1 172
4    2  34
5    2  35
6    2  36
7    2  37
8    2  38
Run Code Online (Sandbox Code Playgroud)

我尝试了以下(效率非常低,并不适用于所有情况......):

data = group_by(data, user) %>%
+   mutate(lead_day = lead(day),
+          day_new = case_when(day == 0 …
Run Code Online (Sandbox Code Playgroud)

r transform sequence fill dplyr

1
推荐指数
1
解决办法
47
查看次数