R 当满足条件时删除行,然后删除208行

R 当满足条件时删除行,然后删除208行,r,dataframe,R,Dataframe,我有一个176800个观察值的data.frame。 我希望在满足以下条件时删除行: full_data_string_split$split1=="SP#" & full_data_string_split$split2=="11" 我知道此条件在425个案例中已完全填充,当我执行以下操作时,它将删除425行: full_data_string_split_removed1 <- full_data_string_split[!(full_data_string_split$s

我有一个176800个观察值的
data.frame
。 我希望在满足以下条件时删除行:

full_data_string_split$split1=="SP#" & full_data_string_split$split2=="11"
我知道此条件在425个案例中已完全填充,当我执行以下操作时,它将删除425行:

full_data_string_split_removed1 <- full_data_string_split[!(full_data_string_split$split1 == "SP#" & full_data_string_split$split2 ==  "11"), ]

full\u data\u string\u split\u removed1使用a解决这一问题要容易得多,但我相信这应该是可行的:

indicies_with_match <- which(full_data_string_split$split1 == "SP#" & full_data_string_split$split2=="11")
indicies_to_remove <- indicies_with_match + rep(0:207, each = length(indicies_with_match))

results <- full_data_string_split[-indicies_to_remove, ]

用_match表示_用_match解决这个问题要容易得多,但我相信这应该是可行的:

indicies_with_match <- which(full_data_string_split$split1 == "SP#" & full_data_string_split$split2=="11")
indicies_to_remove <- indicies_with_match + rep(0:207, each = length(indicies_with_match))

results <- full_data_string_split[-indicies_to_remove, ]
用匹配标记\u这是否有效

result <- which(airquality$Month == 5 & airquality$Temp == 67)
keepalso <- 3
keep <- Reduce("c", apply(cbind(result, result+keepalso), 1, function(x) c(x[1]:x[2])))
airquality[keep,]

   # Ozone Solar.R Wind Temp Month Day
# 1     41     190  7.4   67     5   1
# 2     36     118  8.0   72     5   2
# 3     12     149 12.6   74     5   3
# 4     18     313 11.5   62     5   4
# 28    23      13 12.0   67     5  28
# 29    45     252 14.9   81     5  29
# 30   115     223  5.7   79     5  30
# 31    37     279  7.4   76     5  31
result也许这样行吗

result <- which(airquality$Month == 5 & airquality$Temp == 67)
keepalso <- 3
keep <- Reduce("c", apply(cbind(result, result+keepalso), 1, function(x) c(x[1]:x[2])))
airquality[keep,]

   # Ozone Solar.R Wind Temp Month Day
# 1     41     190  7.4   67     5   1
# 2     36     118  8.0   72     5   2
# 3     12     149 12.6   74     5   3
# 4     18     313 11.5   62     5   4
# 28    23      13 12.0   67     5  28
# 29    45     252 14.9   81     5  29
# 30   115     223  5.7   79     5  30
# 31    37     279  7.4   76     5  31

结果可能重复
@mauritservers
,不,这不是我想要的。我想我的问题不是重复你的建议。没有任何样本数据和代码,很难推断你想要什么。那么,您想删除满足特定条件的行以及随后的207行吗?在这种情况下,您可以获得最后一个条件匹配行
max(which()
,然后通过将207行添加到最后一个匹配行位置来创建一个新的索引范围。@Mauritservers同意需要更多的示例代码,但基于从176800个观察值开始,期望的结果是88400,我们可以推断这是随后的207行。176800-(208*425)=88400。@JasonAizkalns是的,你是对的。显然太懒了,没有做数学运算…+1加上解释。可能重复
@MauritsEvers
,不,这不是我想要的。我想我的问题不是重复你的建议。没有任何样本数据和代码,很难推断你想要什么。所以你想删除e满足特定条件的行加上随后的207行?在这种情况下,您可以获得与行
max(which()
,然后通过将207行添加到最后一个匹配行位置来创建一个新的索引范围。@Mauritservers同意需要更多的示例代码,但基于从176800个观察值开始,期望的结果是88400,我们可以推断这是随后的207行。176800-(208*425)=88400。@JasonAizkalns是的,你是对的。显然太懒了,无法计算…+1加上解释。如果我理解正确,如果你将
length(x)
更改为
length(用匹配表示)
,它可能适用于OP。我认为OP在复制它时遇到了问题,就像我一样。如果我理解正确,如果您将
长度(x)
更改为
长度(用匹配标记)
,它可能适用于OP。我认为OP在复制它时遇到了问题,就像我一样。