다음에는 전체 데이터 세트 df의 일부가 있습니다.
structure(list(Kennung = c("AO03HU23", "AO03HU23", "AO03HU23", "AO03HU23", AO03HU23", "AO03HU23"),
minutenPrompt = c("00:09", "00:18", "00:27", "00:36", "NA:NA", "NA:NA"),
timestamp = structure(c(1494946963, 1494947504, 1494948053, NA, NA, NA), class = c("POSIXct", "POSIXt" ), tzone = "UTC"),
interval.start_lastprompt = c(NA, NA, NA, NA, NA, NA)), row.names = c(NA, 6L), class = "data.frame")
더 명확하게하기위한 그림도 있습니다.
"Kennung"은 서로 아래에있는 모든 참가자를 나타내는 이드와 같은 것입니다. 각 참가자에는 8 개의 행이 있습니다 (첫 번째 참가자 만 볼 수 있음). 각 참가자는 (실험에서) 4 번 프롬프트를 받았습니다 : 정확히 9 분 후에 처음으로 프롬프트를 받았습니다 (이 9 분은 "minutenprompt"에서 00:09로 표시됩니다. 그런 다음 추가로 3 번 프롬프트되었습니다. 각 참가자는 8 개의 행을 가지며 "minutenPrompt"에는 각 사람에 대해 4 개의 항목 (항상 동일한 항목)이 있으므로 각 참가자의 "minutenPrompt"에 "NA : NA"줄이 4 개 있습니다.
이제 각 참가자가 최소한 실험에서 얼마나 오래 배웠는지 (분 단위로 표시) 관심이 있습니다. 첫 번째 프롬프트는 학습을 시작한 후 9 분 후에 왔으므로 각 참가자의 "timestamp"첫 번째 행에 표시된 정확한 시간에서 각 참가자의 첫 번째 "minutenPrompt"필드에 표시된 9 초를 뺀 시간이 필요합니다. 이것은 각 사람이 학습을 시작한 정확한 시간을 제공합니다. 이러한 값을 새 변수 "starting.time"에 저장하는 것이 가장 좋습니다.
그리고 다음 단계에서 학습을 시작한 시간과 각 사람의 마지막 타임 스탬프 (참가자의 2, 3 또는 4 번째 셀에있을 수 있음) 시간 사이의 시간 차이가 필요합니다. 이 시간 간격은 interval.start_lastprompt
변수에 인쇄되어야합니다 (시작 지점과 마지막 프롬프트 시간 사이의 분과 초를 표시해야 함).
여기입니다 tidyverse
및 lubridate
솔루션 :
library(tidyverse)
library(lubridate)
df %>%
group_by(Kennung) %>%
mutate(timestamp = ymd_hms(timestamp),
interval.start_lastprompt = min(timestamp, na.rm = T) - as.difftime(9, units = 'mins'))
이것은 우리에게 제공합니다 :
Kennung minutenPrompt timestamp interval.start_lastprompt
<chr> <chr> <dttm> <dttm>
1 AO03HU23 00:09 2017-05-16 15:02:43 2017-05-16 14:53:43
2 AO03HU23 00:18 2017-05-16 15:11:44 2017-05-16 14:53:43
3 AO03HU23 00:27 2017-05-16 15:20:53 2017-05-16 14:53:43
4 AO03HU23 00:36 NA 2017-05-16 14:53:43
5 AO03HU23 NA:NA NA 2017-05-16 14:53:43
6 AO03HU23 NA:NA NA 2017-05-16 14:53:43
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다