[英]Conditional mutating using dplyr
首先,我在堆棧溢出時發現了另外兩個類似的問題,但是我仍然不知道如何解決這個特定的問題...
最初,我想在數據框中創建一個新列,其中包含跟蹤每只鳥的日期,但時間為21:30。
例如,我想從這開始...
BirdID latitude longitude Date
15K12 492719.9 5634805 2015-06-23 18:25:00
15K12 492491.5 5635018 2015-06-23 18:27:00
15K70 455979.1 5653581 2015-06-24 19:54:00
15K70 456040.9 5653668 2015-06-24 19:59:00
為此...
BirdID latitude longitude Date Night
15K12 492719.9 5634805 2015-06-23 04:25:00 2015-06-23 21:30:00
15K12 492491.5 5635018 2015-06-23 04:27:00 2015-06-23 21:30:00
15K70 455979.1 6535815 2015-06-24 03:54:00 2015-06-24 21:30:00
15K70 456040.9 5653668 2015-06-24 03:59:00 2015-06-24 21:30:00
為此,我使用了這段代碼。
df <- df %>%
group_by(BirdID) %>%
mutate(night=as.POSIXct(date(min(Date)) + days(0) + hours(21) +
minutes(30),tz="Canada/Pacific"))
但是,現在我想為某些人使用略有不同的時間。 例如,對於BirdID = 15K12、15K70、15K30,我希望時間為21:30,但是對於BirdID = 14K22、14K50、14K62,我希望時間為21:20
如何將此條件合並到我的代碼中?
這是使用stringr
包中的str_sub
解決方案並paste
:
df = data.frame(BirdID = sample(LETTERS[1:6],20, replace = T),
Date = latemail(20, st = "2015/06/20", et = "2015/06/25"))
# for latemail function see
http://stackoverflow.com/questions/14720983/efficiently-generate-a-random-sample-of-times-and-dates-between-two-dates
library(stringr)
group_1 = c("A", "D", "E") # 15K70 in your example
group_2 = c("B", "C", "F") # 14K22 in your example
df$Night = as.POSIXct(paste(str_sub(df$Date,1,10), "21:30:00"))
df$Night[df$BirdID %in% group_2] =
as.POSIXct(paste(str_sub(df$Date[df$BirdID %in% group_2],1,10), "21:20:00"))
df
BirdID Date Night
1 F 2015-06-20 04:01:12 2015-06-20 21:20:00
2 F 2015-06-21 06:39:40 2015-06-21 21:20:00
3 B 2015-06-21 08:26:48 2015-06-21 21:20:00
4 E 2015-06-21 11:38:00 2015-06-21 21:30:00
5 A 2015-06-21 18:11:13 2015-06-21 21:30:00
6 C 2015-06-22 03:06:05 2015-06-22 21:20:00
7 A 2015-06-22 03:50:52 2015-06-22 21:30:00
8 C 2015-06-22 05:22:32 2015-06-22 21:20:00
9 F 2015-06-22 07:09:57 2015-06-22 21:20:00
10 C 2015-06-22 15:17:08 2015-06-22 21:20:00
11 E 2015-06-23 05:29:51 2015-06-23 21:30:00
12 C 2015-06-23 09:10:33 2015-06-23 21:20:00
13 D 2015-06-23 09:17:44 2015-06-23 21:30:00
14 F 2015-06-23 11:15:53 2015-06-23 21:20:00
15 F 2015-06-24 04:40:47 2015-06-24 21:20:00
16 D 2015-06-24 04:49:52 2015-06-24 21:30:00
17 F 2015-06-24 05:05:39 2015-06-24 21:20:00
18 F 2015-06-24 09:50:55 2015-06-24 21:20:00
19 F 2015-06-24 15:17:53 2015-06-24 21:20:00
20 C 2015-06-24 20:17:21 2015-06-24 21:20:00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.