對應的值與分組數據的工作,我想改變的最後一個條目的一列在另一列該組匹配相應的價值。因此,對於我下面的數據,對於每一個「鳥巢」(組),最後的「狀態」項將等於該巢「命運」。替換最後一個值組與另一列
數據是這樣的:
nest Status fate
1 1 2
1 1 2
2 1 3
2 1 3
2 1 3
期望的結果:
nest Status fate
1 1 2
1 2 2
2 1 3
2 1 3
2 3 3
它應該是如此簡單。我試圖從dplyr and tail to change last value in a group_by in r以下;它正常工作對某些羣體,但在別人代替錯誤的「命運」值:
library(data.table)
indx <- setDT(df)[, .I[.N], by = .(nest)]$V1
df[indx, Status := df$fate]
我得到的各種錯誤嘗試這種方法dplyr mutate/replace on a subset of rows:
mutate_last <- function(.data, ...) {
n <- n_groups(.data)
indices <- attr(.data, "indices")[[n]] + 1
.data[indices, ] <- .data[indices, ] %>% mutate(...)
.data
}
df <- df %>%
group_by(nest) %>%
mutate_last(df, Status == fate)
我必須失去了一些東西,從簡單資源上面提到的?
猜測'data.table'嘗試的最後一行應該是'df [indx,Status:= fate]'。也嘗試'DF [,狀態:= C(狀態[ - N],命運[.N]。),通過巢=]'。 – nicola