【问题标题】:delete observations from dataframe R [duplicate]从数据框R中删除观察结果[重复]
【发布时间】:2018-01-07 13:12:10
【问题描述】:

我有两个不同的数据框,df1 和 df2。我需要从 df1 中删除 df2 中的观察结果。我正在考虑对每一行和每一列进行循环,并检查该值是否在 df2 内,如果是,则将其删除。我想知道是否有更快的方法可以做到这一点。这就是我现在所拥有的

`for(i in 1:nrow(df1)){
 for(j in 1:ncol(df1)){
   if(df[i,j] %in% df2){
   df[i,j] <- 'NA'
   }
 }
}`

我不想删除整行,只删除 df2 中的值并将单元格向左移动。 然后删除所有 NA 值。非常感谢。

【问题讨论】:

  • 请添加可重现的数据、期望的结果,并阐明“删除所有 NA 值”的含义。不能删除 data.frames 中的元素。
  • @Frank 这似乎不是上一个链接的重复...我有一个我认为会满足@OP但由于duplicate标签而无法发布的答案
  • @ChiPak 您可以游说 OP 发布具有所需输出的完整示例。如果没有这个,我认为即使有更好的答案,这个问答也不会有用。
  • @Santiago,我会将相同的问题作为单独的问题发布...我可以提供一个玩具示例。
  • 它与另一个不同,因为我不想删除整行,我只想删除观察结果并将单元格向左移动。

标签: r


【解决方案1】:

你有什么 id 或 key 要检查吗?

但是,您应该能够在 dplyr 包中使用 anti_join 来检查从 df1 到 df2 的整行的整行:

?anti_join
"return all rows from x where there are not matching values in y, 
keeping just columns from x."

【讨论】:

  • 是的,我认为反连接是最干净的方式。 “检查从 df1 到 df2 的整行”——by= 参数允许限制被比较的列,对吗?无论如何,我只是投反对票,因为这应该更加充实。此外,如果您有澄清问题,它们应该是 OP 的 cmets,而不是“答案”的一部分。
猜你喜欢
  • 2020-02-12
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2016-03-30
相关资源
最近更新 更多