Bti*_*rt3 1 r data-manipulation data-management
我有下面的数据框:
temp <- as.data.frame(with(uadm, table(prlo_state_code)))
Run Code Online (Sandbox Code Playgroud)
我期待创建11个虚拟变量.前10名和"其他"各1名.前10名很容易找到:
#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)
Run Code Online (Sandbox Code Playgroud)
我知道R很棒,所以我假设有一个很容易自动创建(和命名)来自前10名的虚拟变量并将其余部分折叠成一个名为"其他"的最终虚拟变量.
在此先感谢任何帮助或见解.
你很少需要虚拟变量--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)
Run Code Online (Sandbox Code Playgroud)
如果您绝对需要虚拟变量,可以使用它们创建它们model.matrix.
model.matrix(~y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |