在R中删除每个列表的 Dataframe 中列中值小于零的行

xhv8bpkk  于 2023-05-04  发布在  其他
关注(0)|答案(3)|浏览(220)

我有一个包含12个元素( Dataframe )的大列表。每个 Dataframe 具有相同的行数和列数。
我想删除列AMOUNT值〈0的所有行。
必须对列表中的所有 Dataframe 执行此操作。
下面是dataframe的一个例子。

df
NAME   TIME  AMOUNT
1       20     456
2       30     -234
3       15     -13
4       12     267
zpf6vheq

zpf6vheq1#

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)
  )
)
w8f9ii69

w8f9ii692#

你也可以使用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
wmvff8tz

wmvff8tz3#

一个简单的方法(不需要其他R包),如果你的dataframe是'df',你想过滤掉负数的值是'value'

df <- df[value>=0,]

这基于值列大于或等于零来过滤 Dataframe 。希望这能帮上忙。

相关问题