一个新手。我有一个genes
包含两列的数据框:Index
和Name
:
Index Name 1 A 2 B 3 C 4 D
另一个数据框similarity
包含6-7列,其中一列Members
包含Index
用空格分隔的不同值,例如:
Members 1 3 5 7 3 7 6 9 2
我想做的是Names
通过匹配index
数据帧中的列来替换索引genes
。如果在上找不到索引genes
,我只是想放置NA
它的位置。
因此,根据示例,我想要的输出是:
Members A C NA NA C NA NA NA B
。
我们可以用chartr
和gsub
df2$Members <- gsub("\\d+", "NA", chartr(paste(df1$Index, collapse=""),
paste(df1$Name, collapse=""), df2$Members))
df2
# Members
#1 A C NA NA
#2 C NA
#3 NA NA B
或另一种方法是转到split
“成员”列,然后根据来自第一个数据集('df1')的键/值对进行匹配
df2$Members <- sapply(strsplit(df2$Members, "\\s+"), function(x)
paste(setNames(df1$Name, df1$Index)[x], collapse=" "))
df1 <- structure(list(Index = 1:4, Name = c("A", "B", "C", "D")), .Names = c("Index",
"Name"), class = "data.frame", row.names = c(NA, -4L))
df2 <-structure(list(Members = c("1 3 5 7", "3 7", "6 9 2")),
.Names = "Members", class = "data.frame", row.names = c(NA, -3L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句