У меня есть небольшой образец данных, и я пытаюсь изменить значения в двух столбцах на основе значений, которые уже находятся в этих столбцах. Dput из data.frame следующим образом:Как изменить значения на уровне столбца в data.frame в R, используя формулу?
structure(list(Day = c(20L, 20L, 20L, 3L, 3L, 3L, 6L, 6L, 6L,
6L, 11L, 11L, 11L, 4L, 4L, 4L), DaysDead = c(5L, 45L, 60L, 10L,
1L, 60L, 3L, 10L, 5L, NA, 1L, 6L, 10L, 20L, 45L, 2L), Month = c(1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L),
Year = c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 7L, 7L, 7L), CorrMonth = c(1, 0, -1, 1, 2, 0, 2, 1, 2,
2, 3, 3, 3, 0, -1, 1), CorrYear = c(6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L)), .Names = c("Day",
"DaysDead", "Month", "Year", "CorrMonth", "CorrYear"), row.names = c(NA,
-16L), class = "data.frame")
В data.frame, у меня есть два столбца (CorrMonth и CorrYear), которые должны быть изменены таким образом, что:
Если значение CorrMonth 0 или -1, значение CorrYear становится CorrYear-1, в противном случае оно сохраняет свое значение.
Если значение равно 0 CorrMonth, CorrMonth становится 12, и, если значение CorrMonth равно -1, то становится 11.
я должен изменить столбец CorrYear сначала, чтобы получить правильные значения, затем измените CorrMonth.
Я попытался номер 1 с использованием двух различных утверждений:
>Data$CorrYear<-ifelse(-1 >= (Data$CorrMonth) & (Data$CorrMonth) >=0, Data$CorrYear-1, Data$CorrYear)
>Data$CorrYear<-ifelse(-1 == (Data$CorrMonth) & (Data$CorrMonth) == 0, Data$CorrYear-1, Data$CorrYear)
Ни попытка производства нужный мне результат.
> Data$CorrYear
[1] 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7
Я не могу понять, что происходит. Я не получаю никаких ошибок или предупреждений от R.
Ваш Первое условие для 'Data $ CorrMonth' -' <=-1' and '> = 0'. Второе условие также невозможно (одновременно быть 1 и 0). – bergant