Hello,

The problem itself is simple:

i <- match(dat1$ID, dat2$ID)
colSums(t(dat1[i, -1])*dat2[i, -1])
#    1     2     3
#24.58 35.59 17.10


But both dat1 and dat2 are wrong and can be read with read.csv


dat1 <- read.csv(text = "
ID , x, y, z
A, 10,  34, 12
B, 25,  42, 18
C, 14,  20,  8 ", stringsAsFactors = FALSE)

dat2 <- read.csv(text="
ID, weight
A,  0.25
B,  0.42
C,  0.65 ", stringsAsFactors = FALSE)


Simpler, no?


Hope this helps,

Rui Barradas


Às 20:23 de 07/09/19, Val escreveu:
Hi  all

Correction for my previous posting.
dat2 should be read as
dat2 <-read.table(text="ID, weight
A,  0.25
B,  0.42
C,  0.65 ",sep=",",header=TRUE,stringsAsFactors=F)

On Sat, Sep 7, 2019 at 1:46 PM Val <valkr...@gmail.com> wrote:

Hi All,

I have two data frames   with thousand  rows  and several columns. My
samples of the data frames are shown below

dat1 <-read.table(text="ID, x, y, z
ID , x, y, z
A, 10,  34, 12
B, 25,  42, 18
C, 14,  20,  8 ",sep=",",header=TRUE,stringsAsFactors=F)

dat2 <-read.table(text="ID, x, y, z
ID, weight
A,  0.25
B,  0.42
C,  0.65 ",sep=",",header=TRUE,stringsAsFactors=F)

My goal is to  create an index value  for each ID  by mutliplying the
first row of dat1 by the second  column of dat2.

   (10*0.25 ) + (34*0.42) + (12*0.65)=  24.58
   (25*0.25 ) + (42*0.42) + (18*0.65)=  35.59
   (14*0.25 ) + (20*0.42) + (  8*0.65)=  19.03

The  desired out put is
dat3
ID, Index
A 24.58
B  35.59
C  19.03

How do I do it in an efficent way?

Thank you,

______________________________________________
R-help@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.


______________________________________________
R-help@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.

Reply via email to