繁体   English   中英

提取变量值中“ _”之前的部分

[英]Extract the part of a variable value before '_'

我有看起来像这样的数据:

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")

我想提取“ Key”变量的各个部分,以填充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所需的信息。 但是如何将其重新添加到原始数据集“链接”中? 合并将不起作用,因为我最终将获得两个PSU,ID和qtr值(N和实际值)

我在这里问了类似的问题,用R中其他变量的值填充变量中的NA值 ,但是这个问题包括变量长度值,并且包括更完整的数据集,而变量不仅仅与“键”相关。 谢谢。

这是一种方法:

tmp <- data.frame(do.call(rbind, strsplit(Linking$Key, "_")), Linking$Key)
names(tmp) <- names(Linking)
tmp

之所以可行,是因为Linking$Key包含用于创建data.frame的所有相关数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM