gpt4 book ai didi

r - 如果组内出现特定数字,则将数据框中的行标记为 "TRUE"

转载 作者:行者123 更新时间:2023-12-04 23:56:28 24 4
gpt4 key购买 nike

我以前问过你类似的问题,现在反之亦然?
我想在组内找到最后一次出现定义数字的行,但如果该数字未出现在组中,则将使用下一个最高数字。

数据如下所示:

group <- c("a", "a", "a", "a", "b", "b", "b", "b", "c", "c", "c", "c")
value <- c(1, 3, 2, 1, 1, 1, 2, 1, 2, 3, 3, 2)
dat <- data.frame(group, value)
dat

首先,我想搜索该组是否具有值 3,如果是,则组中最后一个数字为 3 的行标记为“TRUE”,如果组中没有数字 3,则查找第一个数字 2,依此类推。最后每组只有一个“TRUE”。所以“结果”列应该是我的问题的结果。
我希望这次问题更容易理解,并在此先感谢您。

预期结果:
 group <- c("a", "a", "a", "a", "b", "b", "b", "b", "c", "c", "c", "c")
value <- c(1, 3, 3, 1, 1, 1, 2, 1, 2, 3, 3, 2)
RESULT <- c("FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "FALSE", "TRUE", "FALSE")
target <- data.frame(group, value, RESULT)
target

最佳答案

干得好。

f <- function(v) replace(logical(length(v)), 
which(v == max(v) & !duplicated(v, fromLast=TRUE)),
TRUE)
transform(dat, GOAL=as.logical(ave(value, group, FUN=f)))
# group value GOAL
# 1 a 1 FALSE
# 2 a 3 TRUE
# 3 a 2 FALSE
# 4 a 1 FALSE
# 5 b 1 FALSE
# 6 b 1 FALSE
# 7 b 2 TRUE
# 8 b 1 FALSE
# 9 c 2 FALSE
# 10 c 3 FALSE
# 11 c 3 TRUE
# 12 c 2 FALSE

关于r - 如果组内出现特定数字,则将数据框中的行标记为 "TRUE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15708245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com