Hi: If I get your meaning, the cut() function would appear to be your friend in this problem.
hDatPretty$liking <- cut(hDatPretty$rating, breaks = c(-11, -4, 4, 11), labels = c('dislike', 'neutral', 'like')) HTH, Dennis On Sat, Nov 6, 2010 at 11:15 PM, hind lazrak <hindst...@gmail.com> wrote: > Hello R-helpers > > > I hope that my subject line is not detering anyone from helping me out:) > I have been stuck of a few hours now, and I don't seem to pinpoint > where the problem is. > > > I have a data.frame which is structured as follow: > str(hDatPretty) > 'data.frame': 1665 obs. of 8 variables: > $ time : num 0 1.02 2.05 3.07 4.09 ... > $ hr : num 62.4 63.6 64.6 65.5 66.2 ... > $ emg : num 3.3 3.42 3.52 3.57 3.6 ... > $ respRate: num 50.4 50.6 50.7 50.8 50.9 ... > $ scr : num 1.7 1.72 1.73 1.74 1.75 ... > $ skinTemp: num 28.1 28.2 28.2 28.2 28.2 ... > $ rating : num 4 4 4 4 4 4 4 4 4 4 ... > $ songId : Factor w/ 37 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ... > > It consists of ratings ($rating) given by people (here the id variable > is not indicated as this is a subset with only one person) for each of > the 37 songs ($songId) they listen to. > While they are listening we measure physiological responses (emg, > hr,...) every second over a period of 45 seconds. > Here's a quick peek at the data > head(hDatPretty) > > time hr emg respRate scr skinTemp rating songId > 1.1 0.000000 62.42135 3.300562 50.40538 1.703105 28.14489 4 1 > 1.2 1.022727 63.59057 3.424884 50.59292 1.718110 28.16189 4 1 > 1.3 2.045455 64.59840 3.515219 50.73523 1.730594 28.17836 4 1 > 1.4 3.068182 65.47707 3.573151 50.83909 1.740594 28.19422 4 1 > 1.5 4.090909 66.22192 3.597183 50.90466 1.748086 28.20948 4 1 > 1.6 5.113636 66.89209 3.588530 50.91911 1.753385 28.22414 4 1 > > So, every study participant gives one rating (from -10 to 10) for each song > If we tab the data this is what we have (for the first 10 songs) > table(hDatPretty$songId, hDatPretty$rating) > > > -10 -9 -7 -3 0 1 3 4 5 7 8 9 10 > 1 0 0 0 0 0 0 0 45 0 0 0 0 0 # song 1 gets a score of 4 > 2 0 0 0 0 0 0 45 0 0 0 0 0 0 # song 2 gets a score of 3 > 3 0 0 45 0 0 0 0 0 0 0 0 0 0 #. > 4 0 45 0 0 0 0 0 0 0 0 0 0 0 > 5 0 0 0 0 0 0 0 0 0 45 0 0 0 > 6 0 0 0 0 0 0 0 0 0 0 0 0 45 > 7 0 0 0 0 0 0 0 0 0 0 45 0 0 #song 7 gets a score of 8 > 8 0 0 0 45 0 0 0 0 0 0 0 0 0 > 9 0 0 0 0 0 0 0 45 0 0 0 0 0 > 10 0 0 0 0 0 45 0 0 0 0 0 0 0 > > What I would like to do is to create another scale ( a factor) based > on the ratings with the following levels > -10;-4 == dislike where -4 is included > -4;4 == neutral where -4 is excluded > 4;10 == like where 4 is excluded > > My code to obtain this new variable > > liking <- numeric(length(hDatPretty$rating)) > liking[hDatPretty$rating <= -4] <- 'dislike' > liking[hDatPretty$rating > -4 & hDatPretty$rating <= 4] <- 'neutral' > liking[hDatPretty$rating > 4] <- 'like' > > hDatPretty['liking']<- factor(liking) > > The problem that I have is that for some reasons it does assign > different values to the same rating for some songs but not all (?) > See for example > > dislike like neutral > 1 0 8 37 ## Here is one problem where the song # > 1gets two 'liking' scores while the rating is constant > 2 0 0 45 > 3 45 0 0 > 4 45 0 0 > 5 0 45 0 > 6 0 45 0 > 7 0 45 0 > 8 0 0 45 > 9 0 10 35 ## here is a similar problem > > Could you PLEASE help me with the proper code to obtain my 'liking' > variable for each of the song based on the rating each song gets? > > Many thanks. > > > Hind > p.s.: I have also tried the cut() in the code as follow...unsuccesfully > > hDatPretty$liking <- by(hDatPretty$rating, hDatPretty$songId, > function (z) { cut(hDatPretty$z, c(-10, -4,4,10), > labels=c('dislike', 'neutral', 'like'))}) > > Error in cut.default(hDatPretty$z, c(-10, -4, 4, 10), labels = c("dislike", > : > 'x' must be numeric > > again thank you. > > ______________________________________________ > 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. > [[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.