让我们首先生成您的数据。
data <- data.frame(
time = c("2018-01", "2018-02", "2018-03", "2018-04"),
age = c(47, NA_integer_, 23, NA_integer_),
gender = c("male", 35, "female", 61),
day = c("mon", "male", "wed", "female"),
ID = c(24, "tue", 45, "mon"),
null = c("", 45, "", 31),
stringsAsFactors = FALSE
)
然后您可以通过执行以下操作使用data.table 包来解决您的问题:
library(data.table)
setDT(data)
data[is.na(age), `:=`(
age = as.double(gender),
gender = day,
day = ID,
ID = null
)][, null:=NULL]
data[]
## time age gender day ID
## 1: 2018-01 47 male mon 24
## 2: 2018-02 35 male tue 45
## 3: 2018-03 23 female wed 45
## 4: 2018-04 61 female mon 31