我的数据看起来像这样:
Linking <- data.frame(
ID = c(round((runif(20, min=10000, max=99999)), digits=0), rep(NA,10)),
PSU = c(paste("A", round((runif(20, min=10000, max=99999)), digits = 0), sep = ''), rep(NA,10)),
qtr = c(rep(1:10, 2), rep(NA,10)),
date = rep("13/04/56", 30),
Direct = rep(c('D','M','U','U','M'), 6),
stringsAsFactors = F)
Linking$Key <- paste(Linking$ID, Linking$PSU, Linking$qtr, sep='_')
Linking$Key[c(21:30)] <- c("87654_A15467_1", "45623_A23456_2", "67891_A12345_4", "65346_A23987_7",
"E3456782_A456321_6", "E3421986_A34564_8", "E9859873_A123456_9", "E3452_A12345_6", "R765498765_A455634_2", "54678_A12345_5")
我想提取&#34; Key&#34;的单独部分。变量,用于填充ID,PSU和qtr,其中这些值为NA。
我可以使用此代码:
test <- filter(Linking, is.na(ID)) %>%
select(Key)
test2 <- data.frame(do.call(rbind, strsplit(test$Key, "_")), test$Key)
names(test2) <- c("ID", "PSU", "qtr", "Key")
提取有NA值的ID,PSU和qtr所需的信息。但是,如何将其添加回原始数据集&#39;链接&#39;?合并不会起作用,因为我最终会得到两个PSU,ID和qtr值(N和实际值)
我在这里问了一个类似的问题Populate the NA values in a variable with values from a different variables in R,但这个问题包括可变长度值,并且包含一个更完整的数据集,其变量不仅仅与“键”相关。谢谢。
答案 0 :(得分:3)
这是一种方法:
tmp <- data.frame(do.call(rbind, strsplit(Linking$Key, "_")), Linking$Key)
names(tmp) <- names(Linking)
tmp
此作品自Linking$Key
包含用于创建data.frame的所有相关数据。