Как я могу рекомбинировать уровни факторов на основе части их строковой переменной? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть некоторые данные, которые я разделяю, если разница во времени между последующими точками больше некоторого порога, и переименовываю идентификатор, где происходит разделение

# prep the data
ID = c(rep("A",5), rep("B",5))
DateTime = c("2014-09-25 08:39:45", "2014-09-25 08:39:48", "2014-09-25 08:40:44", "2014-09-25 09:04:00","2014-09-25 09:04:10", "2014-09-25 08:33:32", "2014-09-25 08:34:41", "2014-09-25 08:35:24", "2014-09-25 09:04:00", "2014-09-25 09:04:09")
df = data.frame(ID,DateTime, stringsAsFactors = FALSE)
df$DateTime<-as.POSIXct(df$DateTime, tz = "UTC")

# split if the time difference is greater than 100 and rename the IDs

library(dplyr)
df %>%
  group_by(ID) %>%
  mutate(timeDiff = c(NA, difftime(tail(DateTime, -1), head(DateTime, -1), units="sec"))) %>%
  mutate(newID = paste(ID, cumsum(!is.na(timeDiff) & timeDiff > 100),sep = "_")) %>%
  ungroup()

После этого я запускаю некоторые функции, данные, основанные настолбец newID.

Но я бы хотел снова соединить мои данные после этого. Таким образом, A_0, A_1 будут склеены как A и аналогично для B.

Мне просто нужно что-то, что распознает уровни факторов до _, когда я выполняю строчку, но я не уверен, как.

...