我有下表:
tbl1 <- tibble::tribble(
~numberEvent, ~numberNovo,
"497", "497",
"498", "498",
"499", "499",
"500", "500",
"501", "498, 506",
"502", "502",
"503", "503",
"504", "504",
"505", "505",
"506", "506",
"507", "498, 506")
我正在尝试创建一个新列,其最大值等于或小于等于numberEvent列中的值。因此,在第5行中,我希望得到498,因为它是小于501的最大值。在最后一行中,期望的结果是506。
我试图将numberNovo列变成一个列表列,但我不知道如何从那里去。任何帮助表示赞赏。
提前致谢!
我们可以separate_rows
用来拆分列,然后通过获取'numberEvent'和'numberNovo'之间的差异,进行分组,找到max
差异索引以对'numberNovo'进行子集化并将其与原始数据绑定
library(dplyr)
library(tidyr)
tbl1 %>%
separate_rows(numberNovo, convert = TRUE) %>%
group_by(grp = numberEvent) %>%
summarise(maxNovo = numberNovo[which.max(as.integer(numberEvent) -
numberNovo)]) %>%
select(maxNovo) %>%
bind_cols(tbl1, .)
# A tibble: 11 x 3
# numberEvent numberNovo maxNovo
# <chr> <chr> <int>
# 1 497 497 497
# 2 498 498 498
# 3 499 499 499
# 4 500 500 500
# 5 501 498, 506 498
# 6 502 502 502
# 7 503 503 503
# 8 504 504 504
# 9 505 505 505
#10 506 506 506
#11 507 498, 506 498
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句