R 仅检查第1行重复值的某些情况
我是R的新手。有人能帮我吗 对于下面的df,我只需要检查每个项目的第一行,如果列“value=0”,那么我只需要保留该项目的两行 df 在这里,对于项目A,我们将检查第一行,值=0,因此我们将保留项目A的两行。但是,当我们检查项目B的第一行时,值=1,因此我们将删除项目B的两行 输出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的组
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