Kim*_*ins 3 if-statement r dataframe
我有一个数据框df如下.
Id ProcessDate
10 2011-12-29 14:14:00
11 2011-12-29 14:16:00
12 2011-12-29 14:14:00
13 2011-12-29 14:20:00
14 2011-12-29 14:49:00
15 2011-12-29 14:51:00
16 2011-12-29 14:53:00
17 2011-12-29 15:11:00
18 2011-12-29 15:13:00
19 2011-12-29 15:10:00
20 2011-12-29 15:21:00
21 2011-12-29 14:34:00
22 2011-12-29 15:26:00
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建第三列Status,{Before, during , after }根据此条件包含这三个值中的任何一个.
if (df$ProcessDate < 2011-12-29 14:48:00)
then df$Status = "Before"
else if (df$ProcessDate > 2011-12-29 14:48:00 & df$ProcessDate < 2011-12-29 15:16:00)
then df$Status = "Between"
else df$Status = "After"
Run Code Online (Sandbox Code Playgroud)
最终的数据框应如下所示.
Id ProcessDate Status
10 2011-12-29 14:14:00 Before
11 2011-12-29 14:16:00 Before
12 2011-12-29 14:14:00 Before
13 2011-12-29 14:20:00 Before
14 2011-12-29 14:49:00 Between
15 2011-12-29 14:51:00 Between
16 2011-12-29 14:53:00 Between
17 2011-12-29 15:11:00 Between
18 2011-12-29 15:13:00 Between
19 2011-12-29 15:10:00 Between
20 2011-12-29 15:21:00 After
21 2011-12-29 14:34:00 After
22 2011-12-29 15:26:00 After
Run Code Online (Sandbox Code Playgroud)
我尝试了一些事情而且没有用,对此问题的任何帮助都非常感谢.
这可能是一种可能的解决方案
ids = c(10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
date = c('2011-12-29 14:14:00', '2011-12-29 14:16:00', '2011-12-29 14:14:00', '2011-12-29 14:20:00', '2011-12-29 14:49:00', '2011-12-29 14:51:00', '2011-12-29 14:53:00', '2011-12-29 15:11:00', '2011-12-29 15:13:00', '2011-12-29 15:10:00', '2011-12-29 15:21:00', '2011-12-29 14:34:00', '2011-12-29 15:26:00')
df <- data.frame(Id = ids,
ProcessDate = strptime(date, format = '%Y-%m-%d %H:%M:%S'))
date.status.before <- strptime('2011-12-29 14:48:00', format = '%Y-%m-%d %H:%M:%S')
date.status.after <- strptime('2011-12-29 15:16:00', format = '%Y-%m-%d %H:%M:%S')
ProcessDateStatus <- function(process.date) {
if (process.date < date.status.before)
"Before"
else if (process.date > date.status.before & process.date < date.status.after)
"Between"
else
"After"
}
df$Status <- lapply(df$ProcessDate, ProcessDateStatus)
Run Code Online (Sandbox Code Playgroud)
导致
Id ProcessDate Status
1 10 2011-12-29 14:14:00 Before
2 11 2011-12-29 14:16:00 Before
3 12 2011-12-29 14:14:00 Before
4 13 2011-12-29 14:20:00 Before
5 14 2011-12-29 14:49:00 Between
6 15 2011-12-29 14:51:00 Between
7 16 2011-12-29 14:53:00 Between
8 17 2011-12-29 15:11:00 Between
9 18 2011-12-29 15:13:00 Between
10 19 2011-12-29 15:10:00 Between
11 20 2011-12-29 15:21:00 After
12 21 2011-12-29 14:34:00 Before
13 22 2011-12-29 15:26:00 After
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |