Luke Neraas
2007-Aug-30 01:21 UTC
[R] How to multiply all dataframe rows by another dataframe's columns
Hello, I have two data frames, X and Y, with two columns each and different numbers of rows. # creation of data frame X Loc1.alleles <- c(1,5,6,7,8) Loc1.Freq <- c(0.35, 0.15, 0.05, 0.10, 0.35) Loc1 <- cbind( Loc1.alleles,Loc1.Freq) X <- data.frame(Loc1) #creation of data frame Y Loc2.alleles <- c(1,4,6,8) Loc2.Freq <- c(0.35, 0.35, 0.10, 0.20) Loc2 <- cbind(Loc2.alleles, Loc2.Freq) Y <- data.frame (Loc2) I would like a flexible way to multiply each element of second column of the X data frame by each element of the second column of the Y data frame. example of what the operation need to do: X[1,2]*Y[,2] ; X[2,2]*Y[,2].............X[4,2]*Y[,2] I have worked on a variety of "for" loops to get this to work without success. The final result should look like a column like this "all_X[,2] * all_Y[,2]" 0.1225 0.1225 0.0350 0.0700 0.0525 0.0525 0.0150 0.0300 0.0175 0.0175 0.0050 0.0100 0.0350 0.0100 0.0200 0.1225 0.1225 0.0350 0.0700 any help would be greatly appreciated Luke Neraas lukasneraas@gmail.com [[alternative HTML version deleted]]
Anders Nielsen
2007-Aug-30 01:48 UTC
[R] How to multiply all dataframe rows by another dataframe's columns
matrix(Y[,2]%o%X[,2],ncol=1) On Wednesday 29 August 2007 03:21 pm, Luke Neraas wrote:> Hello, > > I have two data frames, X and Y, with two columns each and different numbers > of rows. > > # creation of data frame X > > Loc1.alleles <- c(1,5,6,7,8) > Loc1.Freq <- c(0.35, 0.15, 0.05, 0.10, 0.35) > Loc1 <- cbind( Loc1.alleles,Loc1.Freq) > X <- data.frame(Loc1) > > #creation of data frame Y > > Loc2.alleles <- c(1,4,6,8) > Loc2.Freq <- c(0.35, 0.35, 0.10, 0.20) > Loc2 <- cbind(Loc2.alleles, Loc2.Freq) > Y <- data.frame (Loc2) > > I would like a flexible way to multiply each element of second column of the > X data frame > by each element of the second column of the Y data frame. > > example of what the operation need to do: X[1,2]*Y[,2] ; > X[2,2]*Y[,2].............X[4,2]*Y[,2] > > I have worked on a variety of "for" loops to get this to work without > success. > > The final result should look like a column like this > > "all_X[,2] * all_Y[,2]" > 0.1225 > 0.1225 > 0.0350 > 0.0700 > 0.0525 > 0.0525 > 0.0150 > 0.0300 > 0.0175 > 0.0175 > 0.0050 > 0.0100 > 0.0350 > 0.0100 > 0.0200 > 0.1225 > 0.1225 > 0.0350 > 0.0700 > > any help would be greatly appreciated > > Luke Neraas > > lukasneraas at gmail.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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 > and provide commented, minimal, self-contained, reproducible code. >
Moshe Olshansky
2007-Aug-30 01:55 UTC
[R] How to multiply all dataframe rows by another dataframe's columns
Below is one way to do this:> Loc1.alleles <- c(1,5,6,7,8) > Loc1.Freq <- c(0.35, 0.15, 0.05, 0.10, 0.35) > Loc1 <- cbind( Loc1.alleles,Loc1.Freq) > X <- data.frame(Loc1) > Loc2.alleles <- c(1,4,6,8) > Loc2.Freq <- c(0.35, 0.35, 0.10, 0.20) > Loc2 <- cbind(Loc2.alleles, Loc2.Freq) > Y <- data.frame (Loc2) > > Z<-Y[,2] %o% X[,2] > Z[,1] [,2] [,3] [,4] [,5] [1,] 0.1225 0.0525 0.0175 0.035 0.1225 [2,] 0.1225 0.0525 0.0175 0.035 0.1225 [3,] 0.0350 0.0150 0.0050 0.010 0.0350 [4,] 0.0700 0.0300 0.0100 0.020 0.0700> dim(Z) <- c(prod(dim(Z)),1) > Z[,1] [1,] 0.1225 [2,] 0.1225 [3,] 0.0350 [4,] 0.0700 [5,] 0.0525 [6,] 0.0525 [7,] 0.0150 [8,] 0.0300 [9,] 0.0175 [10,] 0.0175 [11,] 0.0050 [12,] 0.0100 [13,] 0.0350 [14,] 0.0350 [15,] 0.0100 [16,] 0.0200 [17,] 0.1225 [18,] 0.1225 [19,] 0.0350 [20,] 0.0700>Regards, Moshe. --- Luke Neraas <lukasneraas at gmail.com> wrote:> Hello, > > I have two data frames, X and Y, with two columns > each and different numbers > of rows. > > # creation of data frame X > > Loc1.alleles <- c(1,5,6,7,8) > Loc1.Freq <- c(0.35, 0.15, 0.05, 0.10, 0.35) > Loc1 <- cbind( Loc1.alleles,Loc1.Freq) > X <- data.frame(Loc1) > > #creation of data frame Y > > Loc2.alleles <- c(1,4,6,8) > Loc2.Freq <- c(0.35, 0.35, 0.10, 0.20) > Loc2 <- cbind(Loc2.alleles, Loc2.Freq) > Y <- data.frame (Loc2) > > I would like a flexible way to multiply each element > of second column of the > X data frame > by each element of the second column of the Y data > frame. > > example of what the operation need to do: > X[1,2]*Y[,2] ; > X[2,2]*Y[,2].............X[4,2]*Y[,2] > > I have worked on a variety of "for" loops to get > this to work without > success. > > The final result should look like a column like this > > "all_X[,2] * all_Y[,2]" > 0.1225 > 0.1225 > 0.0350 > 0.0700 > 0.0525 > 0.0525 > 0.0150 > 0.0300 > 0.0175 > 0.0175 > 0.0050 > 0.0100 > 0.0350 > 0.0100 > 0.0200 > 0.1225 > 0.1225 > 0.0350 > 0.0700 > > any help would be greatly appreciated > > Luke Neraas > > lukasneraas at gmail.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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 > and provide commented, minimal, self-contained, > reproducible code. >
Reasonably Related Threads
- Help create a loopto conduct multiple pairwise operations
- create data frame(s) from a list with different numbers of rows
- matching pairs regardless of order,multiple matches
- matching pairs regardless of order
- [LLVMdev] Incorrect result in LLVM Alias Analysis