[英]Swap results of a value from last years value in same month if the month-year combination is not equal to month-year of system
我有一張桌子如下
+----+-------+---------+
| ID | VALUE | DATE |
+----+-------+---------+
| 1 | 10 | 2019-09 |
| 1 | 12 | 2018-09 |
| 2 | 13 | 2019-10 |
| 2 | 14 | 2018-10 |
| 3 | 67 | 2019-01 |
| 3 | 78 | 2018-01 |
+----+-------+---------+
我希望能夠為所有 ID 交換 VALUE 列,其中 DATE != 系統日期的年月,如果 DATE == 系統日期的年月,則只需保留此年份值
我需要的結果表如下
+----+-------+---------+
| ID | VALUE | DATE |
+----+-------+---------+
| 1 | 12 | 2019-09 |
| 2 | 13 | 2019-10 |
| 3 | 78 | 2019-01 |
+----+-------+---------+
正如 Jon 和 Maurits 所注意到的,您的示例並不清楚:您沒有說明什么是錯誤的格式,並且您提到了“當前年份”,但沒有描述例如明年的預期 output。
這是嘗試實際回答您的問題的代碼:
library(dplyr)
x = read.table(text = "
ID VALUE DATE
1 10 2019-09
1 12 2018-09
1 12 2018-09-04
1 12 2018-99
2 13 2019-10
2 14 2018-10
3 67 2019-01
3 78 2018-01
", header=T)
x %>%
mutate(DATE = paste0(DATE, "-01") %>% as.Date("%Y-%m-%d")) %>%
group_by(ID) %>%
filter(DATE==max(DATE, na.rm=T))
我插入了兩行格式“錯誤”的行(根據我的說法),並將“當前年份”視為您可以在每個 ID 的列中找到的最大年份。
這可能是錯誤的斷言,但我需要更多信息才能更好地回答這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.