代码之家  ›  专栏  ›  技术社区  ›  Vishesh Shrivastav Akitha_MJ

r如果任何列包含-1,则排除

  •  0
  • Vishesh Shrivastav Akitha_MJ  · 技术社区  · 7 年前

    如果数据集中大约80列中的任何一列的值为-1,则必须排除数据。列的总数为100,其他20列允许有-1个值。 我知道这可以通过使用subset来实现,比如:

    keep_data <- subset(foo, Var1 != -1 | Var2 != -1 | Var3 != -1 ....... upto Var80)
    

    如果我不需要传递子集中的所有80个变量,而可以传递列表或其他方法,那么可以用其他方式来完成吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   IceCreamToucan    7 年前

    你可以定义 cols 作为字符向量而不是数字

    cols <- 2:4 #Columns which we'll check for -1
    
    # Remove rows for which any of cols (defined above) are -1
    subset(df, !rowSums(df[cols] == -1))
    
    #You can also use brackets instead of subset
    df[!rowSums(df[cols] == -1),]