我在下面有一個示例 df(日期格式為 as.Date):
| date |
--------------
| 2020-03-03 |
| 2020-06-30 |
| 2020-01-23 |
| 2020-02-10 |
| 2020-11-29 |
我正在嘗試根據 2020-05-01 的截止日期添加一列,并希望得到此表:
| date | cutoff |
------------------------
| 2020-03-03 | prior |
| 2020-06-30 | later |
| 2020-01-23 | prior |
| 2020-02-10 | prior |
| 2020-11-29 | later |
我使用 dplyr 并呼叫 mutate 來創建一個列并最初應用 case_when:
df %>%
mutate(cutoff = case_when(
date < 2020-05-01 ~ "prior",
"later"
))
上面的代碼創建了只有“稍后”值的截止列。
我也試過 ifelse:
df <- with(df, ifelse(date < 2020-05-01, "prior", "later"))
上面的代碼用 NA 值替換了日期列中的值。
我嘗試了不同的代碼:
df %>%
mutate(cutoff = case_when(date < 2020-05-01 ~ "prior",
TRUE ~ "later"))
但結果與我嘗試的第一個代碼相同。
我想將日期轉換為 POSixct 格式,但上面的每個代碼都產生了與上面相同的輸出。
uj5u.com熱心網友回復:
首先定義日期類,ymd然后使用ifelse:
library(lubridate)
library(dplyr)
df %>%
mutate(date = ymd(date),
cutoff = ifelse(date < ymd("2020-05-01"), "prior", "later"))
date cutoff
1 2020-03-03 prior
2 2020-06-30 later
3 2020-01-23 prior
4 2020-02-10 prior
5 2020-11-29 later
資料:
df <- structure(list(date = c("2020-03-03", "2020-06-30", "2020-01-23",
"2020-02-10", "2020-11-29")), class = "data.frame", row.names = c(NA,
-5L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331445.html
