stata-gtools icon indicating copy to clipboard operation
stata-gtools copied to clipboard

Will greshape support strL variabes in the future?

Open fredericky123 opened this issue 2 years ago • 4 comments

Will greshape support strL variabes in the future? Thanks a ton!

fredericky123 avatar Jun 01 '23 14:06 fredericky123

@fredericky123 The current limitation of the Stata plugin API is that I can read strL variables in version 14.1 and later, but I cannot write strL variables at all, so I cannot support it.

You can try to coalesce strL variables into fixed length if that's feasible. You can also try to encode the strL variable and merge it back later (I believe gegen shoud be able to do that correctly; if you're on 16+ then you can use frames and that might not be so slow, but I haven't benchmarked it).

mcaceresb avatar Jun 01 '23 14:06 mcaceresb

Thanks a ton! @mcaceresb I see, strL variables can be read while not written. Just a thought, if greshape can be integrated with frames, that will be great since you said it might not be slow.

fredericky123 avatar Jun 01 '23 14:06 fredericky123

@fredericky123 You can code it up as needed. I'm not sure what the general use case is, but encoding, copying the unique levels to a frame, reshaping, then merge (frlink/frget I think are the commands?) on the encoded variable. Something like this maybe?

gegen id = group(strLvar)
frame put id strLvar, into(tmp)
frame tmp: gduplicates drop
greshape ..., by(id ...) ...
frlink m:1 id , frame(tmp)
frget strLvar, from(tmp)

I don't know that I'd add it as a generic option (certainly not in the near future). There's also no way to interact with frames from the plugin, so the code I'd write would just be generic helper code like the pseudo-code snippet above.

mcaceresb avatar Jun 01 '23 14:06 mcaceresb

I see. Thanks a ton!

fredericky123 avatar Jun 01 '23 14:06 fredericky123