【问题标题】:How do I remove a row in a data frame without using a row number?如何在不使用行号的情况下删除数据框中的一行?
【发布时间】:2022-09-23 02:18:32
【问题描述】:

我想通过不使用行号而是在行本身中使用标识符来删除数据框中的一行。这是因为将来数据框将用新数据更新,并且行号不会在同一个地方。因此,删除我现在不想要的一行的代码,仅由行号指定,将导致我想保留的行在将来被删除。非常感谢您对此的任何帮助,因为我很困惑!

这是我使用的使用行号而不是行标识符的代码:

debris_removed_stats <- slice(debris_removed_stats, -c(22))

我尝试了许多其他使用类似-c(...) 表单的函数,但每次我输入不需要的行的标识符i 我都收到了错误消息Error in ~-c(i) : object \'i\' not found

debris_removed_stats <- slice(debris_removed_stats, -c(i))

debris_removed_stats <- debris_removed_stats[!(debris_removed_tidy$id %in% c(i)), ]

以下是某些上下文的数据框的一部分: debris_removed_stats Data Frame

  • 您可以使用subset(dataset, !condition)dplyr::filter(dataset, !condition)。例如,subset(debris_removed_stats, id != \"i\")
  • 也许您想在删除 rownames(debris_removed_stats) <- NULL 后更新行名。

标签: r delete-row rowname extract-error-message


【解决方案1】:

以下是有关如何实现此目的的一些示例:

数据

df= data.frame(id = c('1', '2', 'i', '3'), b = c(10:13))

  id  b
1  1 10
2  2 11
3  i 12
4  3 13

Dplyr 选项:

  • 使用您的 slice 方法:

    slice(df, -which(df$id=="i"))
    
  • 使用filter(@Andrea 在 cmets 中提到)

    df %>% filter(id != 'i')
    

基础选项:

df[-which(df$id=="i"),]

或者

subset(df, id != 'i')

所有选项导致:

  id  b
1  1 10
2  2 11
3  3 13

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多