我的数据格式如下:
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)
答案 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)