R中

2012-02-23 41 views
1

自动虚拟变量我有如下创建以下的数据帧: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自动创建(和名称)的虚拟变量和折叠,其余为一个名为“其他”的最终假人。

在此先感谢您的帮助或见解。

回答

6

你很少需要虚拟变量--R无声地为你创建它们。

如果你只是想把所有不在前10名的类放在一起,你可以简单地使用ifelse%in%

x <- sample(LETTERS, 1e4, replace=TRUE, p=runif(26)) 
top10 <- names(sort(table(x), decreasing=TRUE)[1:10]) 
y <- ifelse(x %in% top10, as.character(x), "Rest") 
table(y) 

如果您绝对需要虚拟变量,您可以使用model.matrix来创建它们。

model.matrix(~y) 
3

的r回归函数将弥补在model.matrix必要的列时在公式中输入一个因子可变归类..这都是自动的。默认对比度在第一个因子水平和其他每个水平之间,即所谓的“治疗对比”。其他选择也是可能的。