Adrian Johnson
2012-Jul-10 22:38 UTC
[R] combining numeric vector and column in a data frame
Hi: I am trying to map column names of a matrix to another data frame and get values in a different column of data frame I have a matrix m.> my.numeric vec <- m[1,]> my.numeric.veca b c d e f 2 1 4 9 10 3 ## my data frame = df1> df1fileName type status b N alive a T dead d N alive c T dead f N alive e T dead I want to combine as.numeric.vec and df1 and create j with correct filename and type and numeric value>jmy.numeric.vec type a 2 T b 1 N c 4 T d 9 N e 10 T f 3 N How can I combine my.numeric.vec and df1$type when I try: df1[df1$fileName %in% names(my.numeric.vec),2] I get wrong answer. thanks in advance. Adrian
combined <- data.frame(mnv=my.numeric.vec[df1$fileName], type=df1$type) sorted <- combined[order(rownames(combined)),] On Wed, Jul 11, 2012 at 8:38 AM, Adrian Johnson <oriolebaltimore at gmail.com> wrote:> Hi: > I am trying to map column names of a matrix to another data frame and > get values in a different column of data frame > > > I have a matrix m. > >> my.numeric vec <- m[1,] > >> my.numeric.vec > a b c d e f > 2 1 4 9 10 3 > > > > ## my data frame = df1 > >> df1 > > fileName type status > b N alive > a T dead > d N alive > c T dead > f N alive > e T dead > > > I want to combine as.numeric.vec and df1 and create j with correct > filename and type and numeric value > >>j > > my.numeric.vec type > a 2 T > b 1 N > c 4 T > d 9 N > e 10 T > f 3 N > > How can I combine my.numeric.vec and df1$type > > when I try: > > df1[df1$fileName %in% names(my.numeric.vec),2] > > I get wrong answer. > > > thanks in advance. > > Adrian > > ______________________________________________ > R-help at r-project.org 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.
Hi Try this: df1<-read.table(text=" ?fileName??? type? status ?b????????????? N????? alive ?a????????????? T??????? dead ?d????????????? N????? alive ?c????????????? T????? dead ?f????????????? N??????? alive ?e????????????? T??????? dead ?",sep="",header=TRUE) mynumeric.vec<-c(a=2,b=1,c=4,d=9,e=10,f=3) mynumeric.df<-data.frame(key=names(mynumeric.vec),Val=mynumeric.vec) ?j<-merge(df1,mynumeric.df,by.x="fileName",by.y="key") ?j<-j[,c(1,4,2)] colnames(j)<-c("fileName","mynumeric.vec","type") ?j ? fileName mynumeric.vec type 1??????? a???????????? 2??? T 2??????? b???????????? 1??? N 3??????? c???????????? 4??? T 4??????? d???????????? 9??? N 5??????? e??????????? 10??? T 6??????? f???????????? 3??? N A.K. ----- Original Message ----- From: Adrian Johnson <oriolebaltimore at gmail.com> To: r-help <r-help at r-project.org> Cc: Sent: Tuesday, July 10, 2012 6:38 PM Subject: [R] combining numeric vector and column in a data frame Hi: I am trying to map column names of a matrix to another data frame and get values in a different column of data frame I have a matrix m.> my.numeric vec <- m[1,]> my.numeric.veca? ? b? ? c? ? d? e? ? f 2? ? 1? ? 4? ? 9? 10? 3 ##? my data frame = df1> df1fileName? ? type? status b? ? ? ? ? ? ? N? ? ? alive a? ? ? ? ? ? ? T? ? ? ? dead d? ? ? ? ? ? ? N? ? ? alive c? ? ? ? ? ? ? T? ? ? dead f? ? ? ? ? ? ? N? ? ? ? alive e? ? ? ? ? ? ? T? ? ? ? dead I want to combine as.numeric.vec and df1 and create j with correct filename and type and numeric value>jmy.numeric.vec? ? type a 2? T b 1? N c 4? T d 9? N e 10 T f 3? N How can I combine my.numeric.vec and df1$type when I try: df1[df1$fileName %in% names(my.numeric.vec),2] I get wrong answer. thanks in advance. Adrian ______________________________________________ R-help at r-project.org 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.
Rui Barradas
2012-Jul-11 04:21 UTC
[R] combining numeric vector and column in a data frame
Hello, Here are two ways of doing it. df1 <- read.table(text=" fileName type status b N alive a T dead d N alive c T dead f N alive e T dead ", header=TRUE) df1 my.numeric.vec <- scan(text="2 1 4 9 10 3") names(my.numeric.vec) <- letters[1:6] # A way j <- df1 j$my.numeric.vec <- sapply(df1$f, function(y) my.numeric.vec[ names(my.numeric.vec) %in% y ]) j # See it # Another way merge(df1, data.frame(fileName=names(my.numeric.vec), my.numeric.vec=my.numeric.vec)) Hope this helps, Rui Barradas Em 10-07-2012 23:38, Adrian Johnson escreveu:> Hi: > I am trying to map column names of a matrix to another data frame and > get values in a different column of data frame > > > I have a matrix m. > >> my.numeric vec <- m[1,] > >> my.numeric.vec > a b c d e f > 2 1 4 9 10 3 > > > > ## my data frame = df1 > >> df1 > > fileName type status > b N alive > a T dead > d N alive > c T dead > f N alive > e T dead > > > I want to combine as.numeric.vec and df1 and create j with correct > filename and type and numeric value > >> j > > my.numeric.vec type > a 2 T > b 1 N > c 4 T > d 9 N > e 10 T > f 3 N > > How can I combine my.numeric.vec and df1$type > > when I try: > > df1[df1$fileName %in% names(my.numeric.vec),2] > > I get wrong answer. > > > thanks in advance. > > Adrian > > ______________________________________________ > R-help at r-project.org 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. >