使用条件复制数据帧值

时间:2015-12-30 14:42:45

标签: r dataframe copy

我有两个数据帧:

第一个:> 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$id的顺序为vg1$id。并为vgf$value。我从&#34; 1&#34;开始作为价值。 我的问题在这里,我该怎么办:vgf[1]$id=5我把它作为值1,我会试着找到:

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

对于vg的所有ID,其值为vv,我会将它们存储在vgf上,并将 1 作为此处vgf$value的值第二个id,如果没有用上面的处理我给它 2 作为值并重复前面的过程。我将数据框架视为一千行。

我会明白这个问题。感谢

1 个答案:

答案 0 :(得分: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
        }
    }}