列在R各自列表的数据帧删除低于零值的行

问题描述 投票:0回答:2

我有一个大名单有12个元素(dataframes)。每个数据帧具有相同的行数和列数。

我想删除具有在列AMOUNT值<0的所有行。

这对列表中的所有dataframes工作要做。

下面是数据帧的一个例子。

df
NAME   TIME  AMOUNT
1       20     456
2       30     -234
3       15     -13
4       12     267
r conditional
2个回答
3
投票
lapply(our_list, function(X) X[X$AMOUNT >= 0,])

[[1]]
  NAME TIME AMOUNT
1    1   20    456
4    4   12    267

[[2]]
  NAME TIME AMOUNT
2    2   30     23

数据:

our_list <- list(
  data.frame(
    NAME = 1:4, 
    TIME = c(20L, 30L, 15L, 12L), 
    AMOUNT = c(456L,-234L, -13L, 267L)
  ),
  data.frame(
    NAME = 1:4, 
    TIME = c(20L, 30L, 15L, 12L), 
    AMOUNT = c(-6L, 23L, -13L, -26L)
  )
)

0
投票

你也可以使用tidyverse方法

library(tidyverse) # loads the tidyverse

list_of_df <- list_of_df %>% 
  map(., function(x){x %>% filter(AMOUNT >= 0)}) # filters out the values from the AMOUNT column
© www.soinside.com 2019 - 2024. All rights reserved.