2015-12-30 60 views
-1

我有兩個dataframes:複製dataframes值

第一:> vg<-data.frame(id=c(1,2,3,4,5), value=c(5,0,1,0,5))

> vg 
    id value 
1 1  5 
2 2  0 
3 3  1 
4 4  5 
5 5  1 

第二:

> vg1<-data.frame(id=c(5,4,2,3,1), value=c(1,2,3,4,2)) 
> vg1 
    id value 
1 5  1 
2 4  2 
3 2  3 
4 3  4 
5 1  2 

的輸出,我想這個數據幀:

> vgf 
    id value 
1 5  1 
2 4  2 
3 2  3 
4 3  1 
5 1  2 

這裏的想法,我想要得到vgf$idvg1$id相同的順序。和vgf$value。我以「1」作爲價值開始。 這裏我的問題,這是我該怎麼辦:vgf[1]$id=5,我給它的值爲1,我將設法找到:

if(vg[i]$id=5){ 
vv<-vg[i]$value 
} 

,並在vg對於其值是vv所有的ID,我將存儲他們在vgf給他們作爲這裏的價值爲vgf$value爲第二個id如果它不是與上述處理我給它作爲價值和重複的過程前一個。我對待數據框一千行。

我會清楚這個問題。感謝

+3

目前還不清楚你是如何得到預期的輸出 – akrun

+0

這是我的問題,對於這個例子我手動做。但我使用1000行的數據框。所以我在尋求幫助。 – Sasa88

+1

我明白這是你的問題,但說實話,我不明白你是如何得到預期的產出。如果很清楚,我肯定有人可能很早就回答了。 – akrun

回答

0

VGF是VG2,所以我初始化爲下面的VG2:

vg2<-data.frame(id=vg1$id, value=c(-1)) 

這個代碼給出結果。

az<-numeric() 
d<-numeric() 
m<-1 
    for(i in 1:nrow(vg1)){ 

    if(vg2$value[i] == -1) 
    { 
    bool<-0 
    for(j in 1:nrow(vg)) 
    { 
     if(vg1$id[i] == vg$id[j]) 
     { 
      x<-vg$value[j] 
      for (z in 1:nrow(vg)) 
      { 
       if(vg$value[z]==x) 
       { 
        for (k in 1:nrow(vg2)) 
        { 
         if(vg2$id[k] == vg$id[z]) 
         { 

          vg2$value[k]<-m 
          bool<-1 
         } 
        } 
       } 

      } 
     } 
    } 
     if (bool == 1) 
     { 
      m<-m+1 
     } 
    }}