简体   繁体   English

R:按照特定模式删除基于不同值的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM