R 仅检查第1行重复值的某些情况

R 仅检查第1行重复值的某些情况,r,R,我是R的新手。有人能帮我吗 对于下面的df,我只需要检查每个项目的第一行,如果列“value=0”,那么我只需要保留该项目的两行 df 在这里,对于项目A,我们将检查第一行,值=0,因此我们将保留项目A的两行。但是,当我们检查项目B的第一行时,值=1,因此我们将删除项目B的两行 输出 Item city price value A Delhi 10 0 A Mumbai 5 2 我们可以按“项”分组,并过滤“第一个”值为0的组

我是R的新手。有人能帮我吗

对于下面的df,我只需要检查每个项目的第一行,如果列“value=0”,那么我只需要保留该项目的两行

df

在这里,对于项目A,我们将检查第一行,值=0,因此我们将保留项目A的两行。但是,当我们检查项目B的第一行时,值=1,因此我们将删除项目B的两行

输出

Item    city   price  value
 A      Delhi   10      0
 A      Mumbai   5      2 

我们可以按“项”分组,并过滤“第一个”值为0的组

library(dplyr)
df %>%
     group_by(Item) %>%
     filter(first(value) == 0)
# A tibble: 2 x 4
# Groups:   Item [1]
#  Item  city   price value
#  <chr> <chr>  <int> <int>
#1 A     Delhi     10     0
#2 A     Mumbai     5     2
数据
df在基数R中,我们可以使用
ave

df[with(df, ave(value == 0, Item, FUN = function(x) x[1L])), ]

#  Item   city price value
#1    A  Delhi    10     0
#2    A Mumbai     5     2
subset(df, Item %in% subset(df, !duplicated(Item) & !value)$Item)
df <- structure(list(Item = c("A", "A", "B", "B"), city = c("Delhi", 
"Mumbai", "Delhi", "Mumbai"), price = c(10L, 5L, 10L, 5L), value = c(0L, 
2L, 1L, 2L)), class = "data.frame", row.names = c(NA, -4L))
df[with(df, ave(value == 0, Item, FUN = function(x) x[1L])), ]

#  Item   city price value
#1    A  Delhi    10     0
#2    A Mumbai     5     2