R 基于一行删除多行
在下面的data.frame中,我有3个变量。id(A1至A10);从A到E的变量和值。我想根据这些条件删除特定的行 对于每个变量R 基于一行删除多行,r,dplyr,R,Dplyr,在下面的data.frame中,我有3个变量。id(A1至A10);从A到E的变量和值。我想根据这些条件删除特定的行 对于每个变量var(A、B、C、D或E) 如果id==A5和 如果值% 分组依据(var)%>% 过滤器(!any(id='A5'&值
var
(A、B、C、D或E)
如果id==A5
和
如果值<5
然后
删除此特定变量的所有行(10行)
我会很感激你给我的建议
> dput(df)
structure(list(id = structure(c(1L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 2L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 2L, 1L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 2L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 2L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 2L), .Label = c("A1",
"A10", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9"), class = "factor"),
var = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("A",
"B", "C", "D", "E"), class = "factor"), value = c(2, 4, 7,
8, 8, 6, 3, 8, 4, 2, 3, 5, 4, 3, 2, 7, 4, 2, 1, 22, 54, 21,
36, 52, 14, 75, 12, 15, 24, 3, 2, 4, 5, 7, 9, 21, 22, 12,
12, 12, 0.3, 0.4, 0.9, 2, 3, 2, 0.5, 0.2, 0.4, 0.7)), .Names = c("id",
"var", "value"), class = "data.frame", row.names = c(NA, -50L
))
你总是可以的
df %>% filter((id != A5) | (value >= 5))
我们可以使用
dplyr
使用group\u by
和filter
,删除出现id
为“A5”且值
小于5的组(var
)
library(dplyr)
df %>%
group_by(var) %>%
filter(!any(id == 'A5' & value < 5))
库(dplyr)
df%>%
分组依据(var)%>%
过滤器(!any(id='A5'&值<5))
我们可以使用base R
df[with(df, ave(!(id == 'A5' & value < 5), var, FUN = any)),]
@Noobie我有点明白了,但如果能分享预期的结果会更好。感谢您的时间和帮助,可能会重复。哦,这并不能回答OP的问题。所以这不应该在这里
library(data.table)
setDT(df)[df[, .I[any(!(id == 'A5' & value < 5))], var]$V1]