簡體   English   中英

如果月-年組合不等於系統的月-年,則從同一月的去年值交換值的結果

[英]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.

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