Hi Ista, Thanks for your suggestion, I am still trying to wrap my head around the functions you used, as I am not familiar with any of them, but it works perfectly! I do want to understand the code, if you don't mind I would like to ask a few questions
In this line: dfm <- melt(df[c(1, 2, 5, 8)], id = 1) What does the id=1 do? The variables are already specified in df[c(1, 2, 5, 8)], right? What does this line do: dfm.r <- ddply(dfm.r, .(name), transform, index = paste("S", 1:length(name), sep = "")) Thanks again for the help. Laura On Thu, Aug 11, 2011 at 5:57 PM, Ista Zahn <iz...@psych.rochester.edu>wrote: > Hi Laura, > > On Thu, Aug 11, 2011 at 7:01 AM, Lali <laur...@gmail.com> wrote: > > Hi everyone, > > I have a data frame that looks *sort of* like this: > > > > name <- letters[1:5] > > signal.1 <- c("12", "bad signal", "noise", "10", "X") > > length.signal.1 <- 5:9 > > intensity.signal.1 <- 3:7 > > signal.2 <- c("13", "noise", "19.2", "X", "V") > > length.signal.2 <- 2:6 > > intensity.signal.2 <- 1:5 > > signal.3 <- c("NA", "15.4", "error", "NA", "17") > > length.signal.3 <- c("NA", 2, 3, "NA", 4) > > intensity.signal.3 <- c("NA",4, 5, "NA", 5) > > > > #(there are actually up to 16 signals and 50 names, but I made this short > > for the example) > > > > df <- data.frame(cbind(name, signal.1, length.signal.1, > intensity.signal.1, > > signal.2, > > length.signal.2, intensity.signal.2, signal.3, > > length.signal.3, > > intensity.signal.3)) > > > > > > > > I need to "fish out" some values and have them in a new data frame. > > > > I am only interested in values in columns 2, 5 and 8 (actually seq(2, 50, > 3) > > in my real df) > > I want the values that are not: > > "bad signal" > > "noise" > > "error" > > "NA" > > "V" > > > > This is the output I want (the name column is unimportant for my > purposes, > > its just there as a reference for the example). > > > > (name) S1 S2 > > A 12 13 > > B 15.4 (another value found in the other signals >3 not shown > on > > example) > > C 19.2 (another value found in the other signals >3 not shown > on > > example) > > D 10 X > > E X 17 > > > > I do know that there will always be 2 values exactly that do not match > the > > exclusions named above, or none at all > > > > I have tried different approaches, grep, matching,%nin%... But as I am > not > > an advanced used, I am very likely doing something wrong, because I > either > > get a vector, or I get a matrix with TRUE FALSE, and usually I get the > whole > > rows, and I don't want that :( > > I have also being searching the list for answers without avail. > > Any suggestions? Examples including syntax are appreciated (syntax is a > > major weak point for me). > > Here is a solution using the reshape and plyr packages > > library(reshape) > dfm <- melt(df[c(1, 2, 5, 8)], id = 1) > dfm.r <- dfm[!dfm$value %in% c("bad signal", "noise", "error", "NA", "V"), > ] > dfm.r <- ddply(dfm.r, .(name), transform, index = paste("S", > 1:length(name), sep = "")) > cast(dfm.r, name ~ index) > > Best, > Ista > > > > > > Laura > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@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. > > > > > > -- > Ista Zahn > Graduate student > University of Rochester > Department of Clinical and Social Psychology > http://yourpsyche.org > [[alternative HTML version deleted]] ______________________________________________ R-help@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.