John Kane
2006-Aug-01 17:43 UTC
[R] What's a labelled data.frame? And how do I work with it?
I imported an SPSS file with its data labels using spss.get (Library(Hmisc). Class = data.frame I then updated some of the spss labels and added a label to the object itself. label (staff.allocation) <- "raw data from the spss file" I then save it as an R object. When I load the object for further work it comes in as Class = "labelled" "data.frame" Then I try this --------------------------------------------------------- # Get the raw data that we have imported from SPSS. load("H:/R.objects/staff.allocation.Rdata") # Recode all 99's in the data base as NA except dates and Subject since subject # 99 is a valid ID number. # Drop dates and ids st1 <- staff.allocation[, -1:-4] st1[st1==99] <- NA #replace date and id forget the entry date st2 <-data.frame(staff.allocation$site, staff.allocation$subject, staff.allocation$date, st1) ----------------------------------------------------- If I have applied a label to the data.frame I get an error Error in data.frame(staff.allocation$site, staff.allocation$subject, staff.allocation$date, : arguments imply differing number of rows: 1865, 114 I orgininally was getting an error about " staff.allocation$site is a labelled class and cannot be coerced into a data.frame" but I lost that one while trying to see what was happeing If I do not apply the label to staff.allocation then I get a Class = "data.frame and I have no problem creating the second data.frame. Can anyone suggest what I am missing or what is happening Thanks
John Kane
2006-Aug-01 19:48 UTC
[R] What's a labelled data.frame? And how do I work with it?
--- John Kane <jrkrideau at yahoo.ca> wrote:> I imported an SPSS file with its data labels using > spss.get (Library(Hmisc). > Class = data.frame > > I then updated some of the spss labels and added a > label to the object itself. > > label (staff.allocation) <- "raw data from the spss > file" > > I then save it as an R object. When I load the > object > for further work it comes in as Class = "labelled" > "data.frame" > > > Then I try this > >---------------------------------------------------------> # Get the raw data that we have imported from SPSS. > load("H:/R.objects/staff.allocation.Rdata") > > # Recode all 99's in the data base as NA except > dates > and Subject since subject > # 99 is a valid ID number. > > # Drop dates and ids > st1 <- staff.allocation[, -1:-4] > > st1[st1==99] <- NA > > #replace date and id forget the entry date > st2 <-data.frame(staff.allocation$site, > staff.allocation$subject, > staff.allocation$date, st1) > >-----------------------------------------------------> If I have applied a label to the data.frame I get an > error > Error in data.frame(staff.allocation$site, > staff.allocation$subject, staff.allocation$date, : > > arguments imply differing number of rows: 1865, > 114 > > I orgininally was getting an error about > " staff.allocation$site is a labelled > class and cannot be coerced into a data.frame" > > but I lost that one while trying to see what was > happeing > > If I do not apply the label to staff.allocation then > I > get a Class = "data.frame and I have no problem > creating the second data.frame. > > Can anyone suggest what I am missing or what is > happening > > ThanksTo follow up to my own post it appears that if I make any changes in the imported labels I also get an error message when I attempt to create that data.frame The message is Error in as.data.frame.default(x[[i]], optional TRUE) : cannot coerce class "labelled" into a data.frame