[R] Query - Merging and conditional replacement of values in a data frame
MacQueen, Don
macqueen1 at llnl.gov
Mon Feb 13 17:16:42 CET 2017
How about this?
foo <- merge(df1, df2, all=TRUE)
is.new <- !is.na(foo$v11)
foo$v1[is.new] <- foo$v11[is.new]
foo <- foo[, names(df1)]
> foo
time v1 v2 v3
1 1 2 3 4
2 2 5 6 4
3 3 112 3 4
4 4 112 3 4
5 5 2 3 4
6 6 2 3 4
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
On 2/11/17, 4:13 PM, "R-help on behalf of Bhaskar Mitra" <r-help-bounces at r-project.org on behalf of bhaskar.kolkata at gmail.com> wrote:
Hello Everyone,
I have two data frames df1 and df2 as shown below. They
are of different length. However, they have one common column - time.
df1 <-
time v1 v2 v3
1 2 3 4
2 5 6 4
3 1 3 4
4 1 3 4
5 2 3 4
6 2 3 4
df2 <-
time v11 v12 v13
3 112 3 4
4 112 3 4
By matching the 'time' column in df1 and df2, I am trying to modify column
'v1' in df1 by replacing it
with values in column 'v11' in df2. The modified df1 should look something
like this:
df1 <-
time v1 v2 v3
1 2 3 4
2 5 6 4
3 112 3 4
4 112 3 4
5 2 3 4
6 2 3 4
I tried to use the 'merge' function to combine df1 and df2 followed by
the conditional 'ifelse' statement. However, that doesn't seem to work.
Can I replace the values in df1 by not merging the two data frames?
Thanks for your help,
Regards,
Bhaskar
[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list