我有两个数据帧:
第一个:> 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 作为值并重复前面的过程。我将数据框架视为一千行。
我会明白这个问题。感谢
答案 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
}
}}