X光头 发表于 2020-2-27 14:59 
感谢你的回复!
那如果数据非常大,而我不知道那些列里包含-9,应该怎么办呢?
library(xlsx2dfs)
## Loading required package: openxlsx
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df=read.xlsx("tes.xlsx")
df
## V1 V2 V3 V4
## 1 1 2 -9 3
## 2 4 -9 5 6
## 3 7 8 9 10
## 4 11 12 13 14
#变量名字改成小写算了,方便
names(df) <- c("v1","v2","v3","v4")
#找到应删除的位置
df_filter <- (data.frame(torf <- (df+9)==0 )%>%
mutate(sum=v1+v2+v3+v4))["sum"]
#先合并,再筛选,然后选出需要的部分
result <- bind_cols(df,df_filter) %>%
filter(sum==0) %>%
select(-sum)
result
## v1 v2 v3 v4
## 1 7 8 9 10
## 2 11 12 13 14