Я манипулирую данными, содержащими даты, и у меня проблемы. По сути, я хочу рассчитать новую дату на основе двух существующих дат и другой переменной для всех строк в моем фреймворке. Например, я хотел бы иметь возможность вычитать 10 дней из Date1 или рассчитать дату, расположенную на полпути между Date1 и Date2 и т. Д. Однако мне сложно понять назначение класса при добавлении новой расчетной даты в фреймворк данных. Образец dataframe:Сложность, выполняющая арифметику с датами в R
# Uncomment to clear your session...
# rm(list = ls(all = TRUE))
tC <- textConnection("StudyID Date1 Date2
C0031 2-May-09 12-Jan-10
C0032 7-May-09 30-Apr-10")
data <- read.table(header=TRUE, tC)
close.connection(tC)
rm(tC)
#CONVERTING TO DATES
data$Date1 <- with(data,as.Date(Date1,format="%d-%b-%y"))
data$Date2 <- with(data,as.Date(Date2,format="%d-%b-%y"))
Теперь вот где моя проблема начинается
class(data[1, "Date2"] - 10) # class is "Date". So far so good.
data[1, "newdate"] <- (data[1, "Date2"] - 10)
class(data[1, "newdate"]) # class is now "numeric"...
И попытался
data[1, "newdate"] <- as.Date(data[1, "Date2"] - 10)
class(data[1, "newdate"]) # doesn't help. Class still "numeric"...
Просто не понимая, почему это значение становится числовым при присвоении данных
Вы пробовали 'данные $ newdate <- данные $ Date1 - 10'? Я думаю, что проблема заключается в утилизации одного значения. Поскольку столбцы должны иметь одинаковую длину, ваше уникальное значение даты перерабатывается в соответствие количеству строк в вашем файле data.frame. Я предполагаю (я проверю), что атрибуты полосы рециркуляции, таким образом, превращают даты в их числовые формы. –