使用R中不同变量的值填充变量中的NA值

时间:2018-04-03 03:12:38

标签: r na substr

我的数据看起来像这样

Linking <- data.frame(
ID = c(round((runif(20, min = 10000, max = 99999)), digits = 0), NA, NA, NA, NA),
PSU = c(paste("A", round((runif(20, min = 10000, max = 99999)), digits = 0), sep = ''), NA, NA, NA, NA),
qtr = c(rep(1:10, 2), NA, NA, NA, NA)
)

Linking$Key <- paste(Linking$ID, Linking$PSU, Linking$qtr, sep = "_")
Linking$Key[c(21:24)] <- c("87654_A15467_1", "45623_A23456_2", "67891_A12345_4", "65346_A23987_7")

我想要做的是从“Key”中的信息填充ID,PSU和qtr的NA值,但仅限于具有NA值的行。

有谁知道怎么做?

这段代码可以满足我的需求,但它可以为每个变量的所有值做到这一点。我想这样做仅适用于值为NA的行。

Linking2 <- Linking
Linking2$ID <- substr(Linking$Key,1,5)
Linking2$PSU <- substr(Linking$Key,7,12)
Linking2$qtr <- substr(Linking$Key, 14,15)

2 个答案:

答案 0 :(得分:2)

这里的基本思想是使用逻辑索引向量进行分配。

Linking$ID[is.na(Linking$ID)] <- substr(Linking$Key,1,5)[is.na(Linking$ID)]

答案 1 :(得分:0)

您还可以使用warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] tidyr::separate分隔dplyr::coalesce中的值,并填写前三列中的Key值。

NA