r - 统计某个数字的发生次数,将结果添加到新列
问题描述
我有以下数据集:
structure(list(SERIAL = c(118694001L, 118694001L, 118694001L,
118695001L, 118696001L, 118696001L, 118696001L, 118697001L, 118698001L,
118698001L, 118699001L, 118699001L, 118699001L, 118700001L, 118700001L,
118701001L, 118701001L), RELATED = c(9999L, 9999L, 9999L, 3100L,
3100L, 3100L, 3100L, 3100L, 3100L, 3100L, 9999L, 9999L, 9999L,
3100L, 3100L, 3100L, 3100L)), class = "data.frame", row.names = c(NA,
-17L))
我想创建一个新列“count”,它计算列中数字 3100 的发生率RELATED
,但它必须按 分组SERIAL
。
我努力了
df <- within(data, DILs2 <- ave(SERIAL, list(SERIAL, RELATED == 3100), FUN=length))
结果应如下所示:
SERIAL RELATED Count
118694001 9999 0
118694001 9999 0
118694001 9999 0
118695001 3100 1
118696001 3100 3
118696001 3100 3
118696001 3100 3
118697001 3100 1
118698001 3100 2
118698001 3100 2
118699001 9999 0
118699001 9999 0
118699001 9999 0
118700001 3100 2
118700001 3100 2
118701001 3100 2
118701001 3100 2
解决方案
使用您的数据框。这可以通过一行代码完成。
> data.frame(table(df$SERIAL,df$RELATED))
Var1 Var2 Freq
1 118694001 3100 0
2 118695001 3100 1
3 118696001 3100 3
4 118697001 3100 1
5 118698001 3100 2
6 118699001 3100 0
7 118700001 3100 2
8 118701001 3100 2
9 118694001 9999 3
10 118695001 9999 0
11 118696001 9999 0
12 118697001 9999 0
13 118698001 9999 0
14 118699001 9999 3
15 118700001 9999 0
16 118701001 9999 0
剩下的就是美学了。
希望这会有所帮助。
推荐阅读
- reactjs - 生命周期方法和 useEffect 钩子有什么区别?
- c++ - 使用向量的移动键盘排列 (SEGMENTATION FAULT)
- mysql - MySql 在命令行中正确连接,但不能远程连接
- java - JavaFX 使用“标签”作为菜单项
- dataframe - 数据传递给flux-Julia中分类器的训练函数
- amazon-web-services - AWS Lambda:“查看控制台日志了解详细信息。消息:已超出配额。”
- html - 当我有 col-md 时 col-sm 不起作用
- windows - NPM Windows 升级卡在箭头键选择上
- mysql - 如何确保帐户是唯一的
- powerbi - 根据切片器选择的表视觉