r - 如何编码列的前 5 个值
问题描述
我想在下面的数据框中对“代码”列的前 5 个出现/频率值进行编码:
ID | Code
1 | A
2 | A
3 | A
4 | F
5 | F
6 | C
7 | C
8 | E
9 | E
10 | D
10 | D
11 | B
12 | G
13 | H
结果应如下所示:
ID | A | F | C | E | D |
1 | 1 | 0 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 0 |
3 | 1 | 0 | 0 | 0 | 0 |
4 | 0 | 1 | 0 | 0 | 0 |
5 | 0 | 1 | 0 | 0 | 0 |
6 | 0 | 0 | 1 | 0 | 0 |
7 | 0 | 0 | 1 | 0 | 0 |
8 | 0 | 0 | 0 | 1 | 0 |
9 | 0 | 0 | 0 | 1 | 0 |
10 | 0 | 0 | 0 | 0 | 1 |
11 | 0 | 0 | 0 | 0 | 0 |
12 | 0 | 0 | 0 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 0 |
如何在 R 中使用 top_n 和 dcast 函数?或 dplyr。
解决方案
这是一个基本解决方案
as.matrix(table(df$ID,df$Code))[,names(sort(table(df$Code),decreasing=T)[1:5])]
A C D E F
1 1 0 0 0 0
2 1 0 0 0 0
3 1 0 0 0 0
4 0 0 0 0 1
5 0 0 0 0 1
6 0 1 0 0 0
7 0 1 0 0 0
8 0 0 0 1 0
9 0 0 0 1 0
10 0 0 2 0 0
11 0 0 0 0 0
12 0 0 0 0 0
13 0 0 0 0 0
推荐阅读
- java - Hibernate Fetch 不再是 Join 的子类型
- javascript - Forge.JS AES 加密然后解密文件会弄乱编码
- vuetify.js - 按下按钮时防止在列表中单击行
- css - React 中的 CSS 过渡 - 用户单击按钮时文本淡入淡出
- spring - servlet [dispatcherServlet] 的 Servlet.service() 在路径 [] 的上下文中抛出异常 [圆形视图路径 [保留]
- ios - 使用 tableview 功能时出现错误
- java - Eclipse调用sqlsever存储过程提示找不到存储过程
- java - Java Stream:在多个列表上的嵌套流查找抛出 NPE
- javascript - MERN:TypeError:未定义不是对象(评估'this.props.params.id')
- reactjs - highcharts 中注释的个别形状和位置