Seems like no one had responded to this one yet, so I'll take a stab:
## Generate some bogus data:
set.seed(45)
dat - cbind(expand.grid(LETTERS[1:2], 1:3), round(runif(6), 2))
names(dat) - c(state, psu, weight)
dat2 - data.frame(state=sample(c(A, B), 100, replace=TRUE),
psu=sample(3, 100, replace=TRUE),
weight=rep(0, 100))
## The actual work:
split(dat2$weight, interaction(dat2$state, dat2$psu)) -
split(dat$weight, interaction(dat$state, dat$psu))
This, I think, will only work correctly if all state/psu combinations in
your C are also present in C1. If not, you can just augment C1 to
include them.
HTH,
Andy
From: Renuka Sane
I have two dataframes C and C1. Each has three columns viz. state, psu
and weight. The dataframes are of unequal size i.e. C1 could be
2/25/50 rows and C has 42000 rows. C1 is the master table i.e.
C1$state, C1$psu and C1$weight are never the same. ThisA. P., Urban, 0
is not so for C.
For example
C
state, psu,weight
A. P., Urban, 0
Mah., Rural, 0
W.B., Rural,0
Ass., Rural,0
M. P., Urban,0
A. P., Urban, 0
...
C1
state, psu, weight
A. P., Urban, 1.3
A. P., Rural, 1.2
M. P., Urban, 0.8
..
For every row of C, I want to check if C$state==C1$state and
C$psu==C1$psu. If it is, I want C$weight - C1$weight, else C$weight
should be zero.
I am doing the following
for( i in 1:length(C$weight)) {
C$w[C$state[i]==C1$state C$psu[i]==C1$psu] - C1$w[C$state[i] ==
C1$state C$psu[i] == C1$psu]
}
This gives me the correct replacements for the number of rows in C1
and then just repeats the same weights for the remaning rows in C.
Can someone point out the error in what I am doing or show the correct
way of doing this?
Thanks,
Renuka
__
R-help@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
__
R-help@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