r - R:基于两个带日期的列的多个条件创建一个新列
问题描述
我有一个看起来像这样的数据框(简短示例):
df
日期 (dd-mm-yyyy)
date1 date2 Value
01-01-2016 01-01-2016 100
01-02-2016 01-01-2016 90
01-03-2016 01-01-2016 110
01-02-2016 01-02-2016 180
01-03-2016 01-02-2016 80
01-04-2016 01-02-2016 100
01-05-2016 01-02-2016 70
01-03-2016 01-03-2016 90
01-04-2016 01-03-2016 100
01-05-2016 01-03-2016 80
我想根据以下条件创建一个新列:如果 date1 = date2(例如 01-02-2016 = 01-02-2016)我需要在新列“Value_new”中放入“Value”列中的值行,其中 date1 = date2 - 一个月(例如 01-02-2016 = 01-01-2016)。如果 date1 = date2 - 1 个月没有可用值,则新值应等于 0。
输出应该是这样的:
date1 date2 Value Value_new
01-01-2016 01-01-2016 100 0
01-02-2016 01-01-2016 90 0
01-03-2016 01-01-2016 110 0
01-02-2016 01-02-2016 180 90
01-03-2016 01-02-2016 80 0
01-04-2016 01-02-2016 100 0
01-05-2016 01-02-2016 70 0
01-03-2016 01-03-2016 90 80
01-04-2016 01-03-2016 100 0
01-05-2016 01-03-2016 80 0
我试图通过使用下一个代码来解决这个问题,但它不能正常工作:
df$Value_new <- 0
df$Value_new[df$date1==df$date2] <- df$Value[(df$date1 == (df$date2 - months(1))]
我是 R 编程的新手,我会感谢每一个建议。
解决方案
您需要更具体地了解您从哪个值列观察中获取。我无法编写任何代码,因为即使我也不确定。如果我是你,我会将所有过时的内容转换为数字格式以保持简单。这样,您仍然可以通过查找列中和列之间的差异来保留 1 个月。差值将等于 10,000。但是,我不明白您要在 Value_new 中返回什么。我了解您正在尝试从 date1==date2 的给定行中的值中减去一个值,仅此而已。数据框中有几个月的重复,那么 R 将如何知道从哪一个中获取?
推荐阅读
- model-view-controller - 403 - 禁止:访问被拒绝。ASP.NET Core MVC IIS 客户端证书 SSL
- python-3.x - Python3.5 openssl 验证证书时出错
- java - 使用 Java 将大型 JSON 文件拆分为较小的 JSON 文件
- gcc - 如何用 g++ 覆盖像 __libc_start_main 这样的入口点
- python - 处理缺失的分类值 ML
- java - java内置方法性能好吗?
- c# - 如何将带有查询字符串的 url 作为 api 参数传递?
- javascript - 在一个数据属性中为背景图像设置动画
- numpy - 我怎样才能用 numpy 来改变 Dimension 并降低复杂性?
- javascript - How to sort a multidimensional array of objects by property value in javascript?