Проще говоря, я беру даты событий, которые соответствуют определенным условиям в df1, и помещаю их в новый фрейм данных (df2). Форматирование дат в df2 должно быть таким же, как и в df1 ("2000-09-12" или %Y-%m-%d). Однако даты в df2 читаются как «11212», «11213» и т. д.
для генерации данных:
"Date"<-c("2000-09-08", "2000-09-11","2000-09-12","2000-09-13","2000-09-14","2000-09-15","2000-09-18","2000-09-19","2000-09-20","2000-09-21", "2000-09-22","2000-09-25")
"Event"<-c("A","N","O","O","O","O","N","N","N","N","N","A")
df1<-data.frame(Date,Event)
df1
Date Event
1 2000-09-08 A
2 2000-09-11 N
3 2000-09-12 O
4 2000-09-13 O
5 2000-09-14 O
6 2000-09-15 O
7 2000-09-18 N
8 2000-09-19 N
9 2000-09-20 N
10 2000-09-21 N
11 2000-09-22 N
12 2000-09-25 A
вот код:
"df2"<-data.frame()
"tmp"<-data.frame(1,2)
i<-c(1:4)
for (x in i)
{
date1<- df1$Date[df1$Event=="O"][x]
date2<- df1$Date[df1$Event=="A" & df1$Date => date1] [1]
as.numeric(difftime(date2, date1))->tmp[1,2]
as.Date(as.character(df1$Date[df1$Event=="O"][x]), "%Y-%m-%d")->tmp[1,1] ##the culprit
rbind(df2, tmp)->df2
}
Выход цикла выглядит так:
X1 X2
1 11212 13
2 11213 12
3 11214 11
4 11215 10
Я хочу, чтобы это выглядело так:
X1 X2
1 "2000-09-12" 13
2 "2000-09-13" 12
3 "2000-09-14" 11
4 "2000-09-14" 10
as.Date(11212)
- person timfaber   schedule 16.03.2017as.Date(11212, origin="1970-01-01")
это то, что вы хотите. Дополнительную информацию см. в разделе сведений в разделе?as.Date
. - person lmo   schedule 16.03.2017