基于其他数据框创建编号列的有效方法

时间:2018-01-10 09:26:31

标签: r

我有两个包含这些列的数据框:

1º数据框:

N | Accesion | 
1 | ATT      |
2 | BTT      |
3 | CTT      |
4 | GTT      |
5 | ITT      |

2ºDataframe:

| Accesion|
   ATT
   ATT
   ATT
   CTT
   CTT
   CTT
   CTT
   GTT
   GTT
   .
   .
   . 

这就是我希望在2º数据库中拥有的内容:

N | Accesion
1 |      ATT
1 |      ATT
1 |      ATT
2 |      BTT
2 |      BTT
2 |      BTT
2 |      BTT
2 |      BTT
3 |      CTT
       .
       .

我试图用双循环来做这件事: 首先,我对种质进行了分类:

df1 <- with(df1 ,  df1 [order(df1 $Accession) , ])
df2  <- with(df2,  df2[order(df2$Accesion) , ])

然后我使用双循环来访问每个入口并进行比较,如果入口匹配,则创建一个行,其中包含该入口旁边的行号。

for (i in 1:length(df1$Accession)){
  for (z in 1:length(df2$Accesion)){
    if (df2$Accesion[z] == df1$Accession[i]){
      df2$N[z] <- df1$N[i]
    }
}}

当数据帧较小时,这项工作,但我目前正在处理长度约为60000行的数据帧。

你知道另一种有效的方法吗?

这是一个可重复的例子:

df1 <- data.frame(N=c(1,2,3,4,5), Accession=c("ATT","BTT","CTT","GTT","ITT"))
df2 <- data.frame(Accession=c("ATT","ATT","ATT","BTT","BTT","BTT","CTT","CTT","GTT")))

提前谢谢

0 个答案:

没有答案