1
我有一個小樣本的數據,我試圖根據已經在這些列中的值來更改兩列中的值。所述data.frame的dput如下:如何使用公式在R中的data.frame中的列級更改值?
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,否則保持其值。
如果CorrMonth值爲0,CorrMonth變爲12,如果CorrMonth值爲-1,則變爲11
我必須先更改CorrYear列,以獲得正確的價值觀,然後改變CorrMonth。
>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)
也不嘗試產生我所需要的結果:
我使用兩種不同的語句數試圖1。
> 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