[英]R: Delete rows based on different values following a certain pattern
I have the following dataset and I'd like to delete all the rows which contain the values NA; 我有以下数据集,我想删除所有包含值NA的行; NA;
NA; NA;
NA; 0. How can I do that?
0.我该怎么做?
NAME; ID; REFERENCE_YEAR; VALUE
NA; NA; NA; 0
ABANO; 767; 1859; 0
ABANO; 767; 1860; -380
ABANO; 767; 1910; 47
NA; NA; NA; 0
ADAMS; 885; 1987; 0
ADAMS; 885; 1988; -2
ADAMS; 2923; 1997; NA
ADAMS; 2923; 1999; NA
ADAMS; 2923; 2000; NA
ADAMS; 2923; 2002; NA
ADAMS; 2923; 2007; NA
ADAMS; 2923; 2008; -17
NA; NA; NA; 0
AEU.PIRCHLKAR; 504; 1981; 0
NA; NA; NA; 0
NA; NA; NA; 0
If you have only four columns, calling each column and making logical would not be a difficult task. 如果只有四列,则调用每一列并使其逻辑化将不是一件困难的任务。
index = is.na(data$name) & is.na(data$ID) & is.na(data$REFERENCE_YEAR) &
(data$VALUE == 0)
data = data[-index, ]
If you have more columns, you can use "apply" with custom function. 如果您有更多列,则可以将“应用”与自定义功能一起使用。
假设使用sep =“”读取数据
df[!apply(df,1,paste,collapse="")=="NA;NA;NA;0;",]
You could try: 您可以尝试:
df[!(rowSums(is.na(df[,1:3]))==3 &!df[,4]),]
# NAME ID REFERENCE_YEAR VALUE
# 2 ABANO 767 1859 0
# 3 ABANO 767 1860 -380
# 4 ABANO 767 1910 47
# 6 ADAMS 885 1987 0
# 7 ADAMS 885 1988 -2
# 8 ADAMS 2923 1997 NA
# 9 ADAMS 2923 1999 NA
# 10 ADAMS 2923 2000 NA
# 11 ADAMS 2923 2002 NA
# 12 ADAMS 2923 2007 NA
# 13 ADAMS 2923 2008 -17
# 15 AEU.PIRCHLKAR 504 1981 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.