[R] filling columns in frame according to another column frame
Adaikalavan Ramasamy
ramasamy at cancer.org.uk
Wed Feb 23 16:07:55 CET 2005
I am confused. Are you saying that your two data frames are of different
dimensions ?
In any case what I think what you are looking for is which.
# generate the conditioning matrix
a <- matrix( sample(0:1, 9, replace=TRUE), nc=3 )
a
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 0 0
[3,] 0 0 1
# find the index where zero is present
( w <- which( a == 0, arr.ind=T ) )
row col
[1,] 3 1
[2,] 2 2
[3,] 3 2
[4,] 2 3
# generate the matrix of interest
( b <- matrix(1:9, nc=3, byrow=T) )
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
# values that will be used to impute the zero's in a
b[w]
[1] 7 5 8 6
# impute the values of a with b where a is zero
a[w] <- b[w]
# the result
a
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 5 6
[3,] 7 8 1
Regards, Adai
On Wed, 2005-02-23 at 14:14 +0000, Luis Ridao Cruz wrote:
> R-help,
>
> I have a frame which I want to fill up conditioning to another data
> frame column.
>
> The one I want to fill up is as follows (basically an empty one):
>
> > test2
>
> cm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
> 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
> 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
> 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
> 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
> 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
> 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
> 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
> 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
>
> The other looks like :
>
> > test1
>
> cm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> 38 0 0 1 0 0 0 6 0 0 0 0 0 0 0 0 0
> 39 0 0 1 0 0 0 0 0 0 0 0 0 6 0 0 0
> 40 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
> 41 0 0 2 0 0 0 0 0 0 0 6 0 0 0 0 0
> 43 0 0 1 0 0 0 4 0 0 0 0 0 0 0 0 0
> 44 0 0 4 0 0 0 5 0 0 0 0 0 0 0 0 0
> 45 0 0 2 0 0 0 0 0 0 0 6 0 0 0 0 0
> 47 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0
> 48 0 0 2 0 0 0 0 0 0 6 0 0 0 0 0 0
> 49 0 0 2 0 0 0 0 0 0 6 0 0 0 0 0 0
> 50 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0
> 51 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0
>
> Length of both frames are different ( test2 = 150 and test1 = 70 )
> The key column is 'cm'
>
> I have tried someting (fill column '3' in test2):
>
> test2 [, '3' ]<-
> ifelse ( test2$'cm' %in% test1$'cm' , test1$'3' , 0)
>
> but the result is wrong.
>
> Any suggestions?
>
> Thanks in advance
>
>
> > version
> _
> platform i386-pc-mingw32
> arch i386
> os mingw32
> system i386, mingw32
> status
> major 2
> minor 0.1
> year 2004
> month 11
> day 15
> language R
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
More information about the R-help
mailing list