【发布时间】:2020-08-29 09:59:10
【问题描述】:
我需要用另一列的最后一行替换每个组的最后一行。以前,我可以通过将除最后一行之外的所有数据设为零,然后使用ifelse 到mutate 的列来实现这一点,该列仅取大于 0 的值。但最后一行始终是最低值,所以我可以使用case_when 仅选择最小值。现在数据是随机的,大小与位置无关。
在这种情况下,我希望 PCAR1 中的最后一个值替换 PCAR 中的最后一个值。
我一直在尝试使用 slice 或 tail,但我只是收到错误返回。到目前为止,我有一些看起来像:
df <- df%>%
group_by(time_bin)%>%
mutate(PCAR1 = ifelse(slice(1:(n()-1)), PCAR1, 0))%>%
mutate(PCAR = ifelse(PCAR1 >0, PCAR1, PCAR))
#Data#
df <- structure(list(time_bin = c(100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 200, 200, 200), PCAR1 = c(325.947943826017,
339.835783930254, 310.492430685748, 332.43346350175, 199.54398828513,
142.821605613045, 191.572198416637, 170.67567450243, 131.535087546719,
329.624262985389, 229.99470258103, 217.344970472844, 157.85520203161,
153.107703614107, 131.659911154268, 82.4153938744129, 162.845234183621,
106.871069919164, 61.5051800997765, 126.922394965646, 87.0148189713542,
95.0831508155524, 71.7975354573988, 32.3815944849868, 24.2498801736037,
21.6391689024657, 14.8451420537953, 14.7021072370529, 19.0482898453303
), PCAR = c(377.981689418665, 325.947943826017, 339.835783930254,
310.492430685748, 332.43346350175, 199.54398828513, 142.821605613045,
191.572198416637, 170.67567450243, 131.535087546719, 329.624262985389,
229.99470258103, 217.344970472844, 157.85520203161, 153.107703614107,
131.659911154268, 82.4153938744129, 162.845234183621, 106.871069919164,
61.5051800997765, 126.922394965646, 87.0148189713542, 95.0831508155524,
71.7975354573988, 32.3815944849868, 24.2498801736037, 21.6391689024657,
14.8451420537953, 14.7021072370529)), row.names = c(NA, -29L), class = c("tbl_df",
"tbl", "data.frame"))
Thanks!
【问题讨论】:
标签: r