r - 在时间序列数据帧中添加作为重复数字的二进制指标的列的最有效方法是什么?
问题描述
我有一个类似于此示例数据框的数据框:
example <- data.frame(id = c("1","1","1", "1", "2", "2", "2"),
amount = c(2300, 1765, 2300, 1500, 35, 180, 180),
date = c("2010-11-01", "2010-11-02", "2010-11-03", "2010-11-04", "2010-11-01", "2010-11-02", "2010-11-03"))
我想添加一个包含 1 的列,表示金额是否为经常性金额。只有当金额在同一 id 内重复时,才能将经常性金额视为经常性金额。所以它看起来像这样:
desiredResult <- data.frame(id = c("1","1","1", "1", "2", "2", "2"),
amount = c(2300, 1765, 2300, 1500, 2300, 180, 180),
date = c("2010-11-01", "2010-11-02", "2010-11-03", "2010-11-04", "2010-11-01", "2010-11-02", "2010-11-03"),
probableRecurringAmount = c(1,0,1,0,0,1,1))
数据集非常大,我很难想出一个有效的解决方案。我正在考虑根据这些其他列的组合向列添加键,但我只想有一个二进制标志。
解决方案
你可以这样做:
library(dplyr)
example %>%
group_by(id, amount) %>%
mutate(probableRecurringAmount = ifelse(n() > 1, 1, 0))
# A tibble: 7 x 4
# Groups: id, amount [5]
# id amount date probableRecurringAmount
#<fct> <dbl> <fct> <dbl>
#1 1 2300 2010-11-01 1
#2 1 1765 2010-11-02 0
#3 1 2300 2010-11-03 1
#4 1 1500 2010-11-04 0
#5 2 35 2010-11-01 0
#6 2 180 2010-11-02 1
#7 2 180 2010-11-03 1
推荐阅读
- php - 从 json 打印 PHP 文本
- node.js - 如何根据用户类型重定向用户
- python - 如何以尽可能少的开销测量多个 GPIO 端口之间的时间变化
- apache-spark - 在 Spark 中对数百万个二进制文件进行分组
- python - 如何以 MSE 最小化的方式收敛权重?
- image-processing - 如何使用带有透明图像的 imageSearch?
- tensorflow - 在更新批量规范移动平均值之前在 tensorflow 中实现批量规范化,其中图形运行多次
- python - Pandas:如何通过拆分从一个多索引级别向多索引添加一个级别?
- python - 神经网络中具有不同样本大小的多个输入
- matlab - 在 Matlab 中校正照片