sql - Inserting values of a column from one dataframe to another while respecting a given condition -
i have 2 data frames d1
, d2
. d2
has column contains data prefer added d1
.
each of data frames have equal number of rows , columns.
> d1 t1 t2 numvehicles avgbyrunrep 1 0.2 0.3 10 225.5000 2 0.2 0.4 10 219.6667 3 0.2 0.5 10 205.1667 4 0.2 0.6 10 220.6667 5 0.2 0.7 10 205.1667 > d2 t1 t2 numvehicles avglostperrep 1 0.2 0.3 10 14.333333 2 0.2 0.4 10 9.000000 3 0.2 0.5 10 8.000000 4 0.2 0.6 10 8.000000 5 0.2 0.7 10 6.833333
so values in d2
's avglostperrep
column "transferred" d1
matching t1
, t2
, numvehicles
.
so in end d1
like:
> d1 t1 t2 numvehicles avgbyrunrep avglostperrep 1 0.2 0.3 10 225.5000 14.333333 2 0.2 0.4 10 219.6667 9.000000 3 0.2 0.5 10 205.1667 8.000000 4 0.2 0.6 10 220.6667 8.000000 5 0.2 0.7 10 205.1667 6.833333
it possible save final resulting data frame in variable d3
, if makes difference @ all.
i know how can solved sqldf
pure r
ok well.
i tried merge
r, got big data-frame lot of na
. tried update
, insert into
sqldf
no avail.
1) performs left join along indicated columns:
library(sqldf) sqldf("select * d1 left join d2 using(t1, t2, numvehicles)")
we alternately use left natural join causes join occur along commonly named columns:
sqldf("select * d1 left natural join d2")
for data shown in question alternately use inner join omitting word left
in either of above; however, if actual data not have value in d2
every row of d1
inner join omit rows of d1
whereas left join include them , add na
joined d2
column.
2) corresponding native r code first sqldf statement
merge(d1, d2, all.x = true, = 1:3)
and second:
merge(d1, d2, all.x = true)
inner joins obtained omitting all.x = true
in either case.
Comments
Post a Comment