Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible bug in dealing with factor columns? #37

Open
arunsrinivasan opened this issue Dec 16, 2014 · 1 comment
Open

Possible bug in dealing with factor columns? #37

arunsrinivasan opened this issue Dec 16, 2014 · 1 comment

Comments

@arunsrinivasan
Copy link

I was attempting to answer this SO question using:

require(splitstackshape)
merged.stack(d, id="PID", var.stubs=c("Cue"), sep="var.stubs")
#     PID .time_1 Cue
#  1:   1       1   1
#  2:   1       1   3
#  3:   1       1   5
#  4:   1       2   2
#  5:   1       2   5
#  6:   1       2   5
#  7:   2       1   1
#  8:   2       1   3
#  9:   2       1   5
#10:   2       2   2
#11:   2       2   5
#12:   2       2   5

Unless I'm mistaken as to what the code is supposed to do, this isn't the right output.

sessionInfo()
# R version 3.1.2 (2014-10-31)
# Platform: x86_64-apple-darwin13.4.0 (64-bit)

# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

# attached base packages:
# [1] stats     graphics  grDevices utils     datasets  methods   base     

# other attached packages:
# [1] splitstackshape_1.4.2 data.table_1.9.5     

# loaded via a namespace (and not attached):
# [1] chron_2.3-45 tools_3.1.2 
@mrdwab
Copy link
Owner

mrdwab commented Dec 30, 2014

@arunsrinivasan, Oooh. That's ugly. Thanks for the heads up.

I don't think that it's a bug in merged.stack related to factors, but rather, that merged.stack won't work correctly if the "id.vars" don't actually work as IDs.

Here's an approach with getanID to show what I mean:

str(d)
# 'data.frame':  6 obs. of  3 variables:
#  $ PID : Factor w/ 2 levels "1","2": 1 1 1 2 2 2
#  $ Cue1: Factor w/ 3 levels "1","2","3": 1 2 3 1 2 3
#  $ Cue2: Factor w/ 1 level "5": 1 1 1 1 1 1
merged.stack(getanID(d, "PID"), var.stubs = "Cue", sep = "var.stubs")
#     PID .id .time_1 Cue
#  1:   1   1       1   1
#  2:   1   1       2   5
#  3:   1   2       1   2
#  4:   1   2       2   5
#  5:   1   3       1   3
#  6:   1   3       2   5
#  7:   2   1       1   1
#  8:   2   1       2   5
#  9:   2   2       1   2
# 10:   2   2       2   5
# 11:   2   3       1   3
# 12:   2   3       2   5
str(.Last.value)
# Classes ‘data.table’ and 'data.frame':  12 obs. of  4 variables:
#  $ PID    : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 2 2 2 2 ...
#  $ .id    : int  1 1 2 2 3 3 1 1 2 2 ...
#  $ .time_1: chr  "1" "2" "1" "2" ...
#  $ Cue    : Factor w/ 4 levels "1","2","3","5": 1 4 2 4 3 4 1 4 2 4 ...
#  - attr(*, "sorted")= chr  "PID" ".id" ".time_1"
#  - attr(*, ".internal.selfref")=<externalptr> 

Let me still look at it a little bit more though....

(Sorry for the delayed response -- I never got any notification from GitHub when I logged in that there was anything for me to look at!)

(Oh, and I hope you don't mind me hijacking the question--the accepted answer was bugging me!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants