用显示的下一个数字替换NA

Eli*_*aum 0 r

对于下面显示的数据,我需要将"问题"列中的NA替换为显示的下一个数字.例如,时间1544890711782将是问题1,时间1544890722157将是问题2.

数据:

structure(list(participant = c("x", "x", "x", "x", "x", "x", 
"x", "x", "x", "x", "x"), time = c(1544890711782, 1544890711809, 
1544890711834, 1544890711862, 1544890711887, 1544890711899, 1544890722157, 
1544890722182, 1544890722210, 1544890722236, 1544890722245), question = c(NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, 2L)), row.names = c(8470L, 8471L, 8472L, 8473L, 8474L, 27150L, 8852L, 8853L, 8854L, 8855L, 
27134L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Bra*_*gen 6

使用包动物园中的na.locf :(假设您将数据帧存储在名为'data'的对象中)

library(zoo)
data$question <- na.locf(data$question, fromLast = TRUE, na.rm = FALSE)
Run Code Online (Sandbox Code Playgroud)

(fromLast设置为T:所以我们查看第一个非缺失值; na.rm设置为F:因此不会丢弃尾随的NA)

输出:

      participant         time question
8470            x 1.544891e+12        1
8471            x 1.544891e+12        1
8472            x 1.544891e+12        1
8473            x 1.544891e+12        1
8474            x 1.544891e+12        1
27150           x 1.544891e+12        1
8852            x 1.544891e+12        2
8853            x 1.544891e+12        2
8854            x 1.544891e+12        2
8855            x 1.544891e+12        2
27134           x 1.544891e+12        2
Run Code Online (Sandbox Code Playgroud)