簡體   English   中英

R:根據帶有日期的兩列的多個條件創建一個新列

[英]R: create a new column based on multiple conditions of two columns with dates

我有一個如下所示的數據框(簡短示例):

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 - 可用一個月沒有值,則新值應等於 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 編程的新手,非常感謝每一個建議。

您需要更具體地了解您從哪個 Value 列觀察中獲取。 我無法編碼任何東西,因為即使我也不確定。 如果我是你,我會將所有過時的內容轉換為數字格式以保持簡單。 這樣,您仍然可以通過查找列內和列間觀察值之間的差異來保留 1 個月的時間。 差異將等於 10,000。 但是,我不明白您要在 Value_new 中返回什么。 我知道您正在嘗試從給定行中 date1==date2 的值中減去一個值,但僅此而已。 數據框中有幾個月的重復,那么 R 怎么知道從哪一個中抓取呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM