尝试根据两列中的值删除行

时间:2017-04-15 01:27:38

标签: r row

我的数据格式如下:

 name  value1  rem 
-------------------
| tom  | 1   |  1
| tom  | 3   |  0
| tom  | 5   |  0
| bill | 7   |  0
| bill | 1   |  1
| bill | 3   |  0
| mark | 5   |  0
| mark | 9   |  0
| mark | 9   |  0

我要做的就是删除任何一行中包含1" rem"和#34; rem中的1行具有相同ID的行#"所以在转换之后,我希望它看起来像:

 name  value1  rem 
-------------------
| mark | 5   |  0
| mark | 9   |  0
| mark | 9   |  0

我无法使用逻辑命令弄清楚如何在R中执行此操作。我的实际数据有更多的行和列,所以我不能按位置删除它们,即只删除前6行。我得到了如何删除具有特定值的任何行。我无法弄清楚如何根据两行中的值删除行,其中一行是有条件的。下面是一些R代码,它们构成了如上所述的数据框:

name <- c("tom", "tom", "tom", "bill", "bill","bill","mark","mark","mark")
value1 <- c(1,3,5,7,1,3,5,9,9)
rem <- c(1,0,0,0,1,0,0,0,0)
df <- data.frame(name, value1, rem)

2 个答案:

答案 0 :(得分:2)

另一种方法:

# get the names that has 1 rem
# then identify names not in that subset and 
# use it to subset the df
df[!(df$name %in% df$name[df$rem == 1]), ]

答案 1 :(得分:0)

你可以这样做:

install.packages('dplyr')
library(dplyr)
newdf<- df %>%
  group_by(name)%>%
  summarise(rem = sum(rem))

newdf2<-filter(newdf, rem<1)