[R] Query - Merging and conditional replacement of values in a data frame

Bert Gunter bgunter.4567 at gmail.com
Sun Feb 12 03:43:39 CET 2017


Your "assignments" (<-) are not legitimate R code that can be cut and
pasted. Learn to use dput() to provide examples that we can use.

You fail to say whether the time column of df2 is a proper subset of
df1 or may contain times not in df1. I shall assume the latter. You
also did not say whether the time values occur in order in both data
frames. I shall assume they do not.

If I understand correctly,then,  match and subscripting will do it,
something like


> df1 <-data.frame(time = 1:6, v1 = c(2,5,1,1,2,2))
> df2 <- data.frame(time = 4:3,v11 = c(112,113))

> wm <- match(df1$time,df2$time)
> df1[!is.na(wm),"v1"] <- df2[na.omit(wm),"v11"]

> df1

  time  v1
1    1   2
2    2   5
3    3 113
4    4 112
5    5   2
6    6   2

Cheers,
Bert





Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Sat, Feb 11, 2017 at 4:13 PM, Bhaskar Mitra
<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