R 中的自动虚拟变量
我有以下创建的数据框:
temp <- as.data.frame(with(uadm, table(prlo_state_code)))
我希望创建 11 个虚拟变量。前 10 名各一个,“其他”一个。可以很容易地找到前 10 个:
#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)
我知道 R 很棒,所以我假设有一个很容易自动创建(和命名)前 10 个虚拟变量的方法,并将其余变量折叠到名为“other”的最终虚拟变量中。 '
预先感谢您的任何帮助或见解。
I have the following data frame which is created below:
temp <- as.data.frame(with(uadm, table(prlo_state_code)))
I am looking to create 11 dummy variables. One for each of the top 10 and an 'other'. The top 10 can easily be found with:
#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)
I know R is great, so I am assuming there is an easy to auto-create (and name) the dummy variables from the top 10 and collapse the rest into a final dummy called 'other.'
Thanks in advance for any help or insight.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您很少需要虚拟变量——R 会默默地为您创建它们。
如果你只是想把所有不在前10名的班级放在一起,
您可以简单地使用
ifelse
和%in%
。如果您绝对需要虚拟变量,可以使用 model.matrix 创建它们。
You rarely need dummy variables -- R silently creates them for you.
If you just want to put all the classes that are not in the top 10 together,
you can simply use
ifelse
and%in%
.If you absolutely need dummy variables, you can create them with
model.matrix
.当在公式中输入因子类变量时,R 的回归函数将在 model.matrix 中构成必要的列。这都是自动的。默认对比是在第一个因素水平和其他每个水平之间,即所谓的“治疗对比”。其他选择也是可能的。
R's regression functions will make up the necessary columns in the model.matrix when a factor-classed variable is entered in a formula.. It's all automatic. The default contrast is between the first factor level and each of the other levels, so-called "treatment constrasts". Other choices are possible.