Перевести цифры c и Posixct в даты в R - PullRequest
0 голосов
/ 07 февраля 2020

Моя задача:

На первом этапе я хотел бы определить мои переменные как даты. Определяется, так как даты уже есть в записи данных, другие все еще числовые или определены как POSIXct. (у меня уже есть трудности здесь.)

Как только все мои переменные станут доступны как даты, Я хотел бы выбрать все даты, которые произошли после определенной даты, которая также включена в набор данных.

Эти даты должны быть сохранены в отдельной записи данных. (У меня есть набор данных, который только содержит NA.)

Что я пробовал до сих пор?

require (readxl)
data <- as.data.frame(read_excel("data.xlsx",
                                    col_types = "numeric"))
str(data)
# numeric, dates, posixct

# Step 1: 
# subset including dates
dates <- subset(data, select = c(seq(2,49,3),50))
str(dates)
# numeric, dates, posixct

# try to define the whole record as a date
require (lubridate) 
# dates <- apply(dates, 2, convertToDate)
# R defines my data set as a vector (?), contains only zeros

# next try: Define individual variables one after the other as a
# date
# dates$date_1 <- convertToDate(dates$date_1)
# R defines variable as a vector (?), contains only zeros

# desperate attempt: just keep on calculating

# Step 2

# create a matrix which is large enough
matrix_dates <- matrix(rep(0,274*38),274,38)
# the data set contains 39 variables, whereby the first 38
# should be compared with the last variable. 

# Fill up the matrix
for (i in 1:274){
  idx <- which(dates[i,1:38] >= dates[i,39])
  if (length(idx) > 0){
    matrix_dates[i,1:length(idx)] <- as.character(dates[i,idx])
  }
}

# define as numeric
matrix_dates <- as.data.frame(apply(matrix_dates, 2, as.numeric))

# define as dates
for (j in 1:ncol(matrix_dates)){ 
  matrix_dates[,j] <- as.Date(matrix_dates[,j], origin = "1970-01-01")
}

# set all origin data (1970-01-01) to NA
matrix_dates[matrix_dates == "1970-01-01"] <- NA
# whole data set includes NA```


**Maybe someone has an idea?**

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...