gpt4 book ai didi

r - R 中的高级行删除

转载 作者:行者123 更新时间:2023-12-02 09:32:14 25 4
gpt4 key购买 nike

我希望基于高级选择逻辑(即不仅仅是一个简单的子集)在 R 中进行行删除。这是一些示例代码以及我需要做什么

v1 <- c(1:11)
v2 <- c('a','a','b','b','b','b','c','c','c','c','c')
v3 <- c(3,13,14,13,14,9,14,13,14,13,14)
v4 <- c('','x','','','','x','','','','','x')
v5 <- c('','x','','y','','x','','y','','y','x')

test.df <- data.frame(v1,v2,v3,v4,v5)
names(test.df) <- c('id','level','number','end_flag','logic_flag')

我想要做的是删除第一个逻辑标志等于“y”的每个特定级别的所有行。

因此,在这种情况下,最终结果不应删除级别 a 的任何行、级别 b 的第 5 行和第 6 行以及级别 c 的第 9、10、11 行。

基本上,想要使每个级别的 end_flag 等于“x”的数字列中出现的第一个“13”,然后删除 end_flag =“x”下方该级别的所有行让我知道这是否有意义,因为我需要在继续处理其余代码之前清理这部分!

谢谢!

最佳答案

基础R使用cumsum两次:

posty <- function(x) cumsum(cumsum(x))<=1
test.df[with(test.df, ave(logic_flag=="y", level, FUN=posty)),]

# id level number end_flag logic_flag
#1 1 a 3
#2 2 a 13 x x
#3 3 b 14
#4 4 b 13 y
#7 7 c 14
#8 8 c 13

关于r - R 中的高级行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31847630/

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