【问题标题】:How to Compare content of two data frames? [duplicate]如何比较两个数据框的内容? [复制]
【发布时间】:2019-04-24 10:22:35
【问题描述】:

给定两个数据帧 A 和 B,其中 A 比 B 长。 A的行中的值必须存在于B的行中。 如果B中不存在A的一行,则应将其删除。 最后 A 应该有与 B 相同的行。 我需要一个for循环吗? 感谢您的帮助,希望我能很好地说明问题。

例如:

x=c(1,3,7,1,1,4,3)
y=c(2,5,5,6,2,6,4)
A<-cbind.data.frame(x,y)

x2<-c(1,3,5,1,3)
y2<-c(2,4,7,6,8)
B<-cbind.data.frame(x2,y2)



##A should like this at the end
```
x<-c(1,1,1,3)
y<-c(2,6,2,4)
A<-c(x,y)
```

【问题讨论】:

  • 类似:merge(A, B, by.x = c("x", "y"), by.y = c("x2", "y2"))
  • @RonakShah 这是一个骗子,我只是想找到合适的。
  • 合并后如需保留订单,见here
  • 你可以做merge(B, A, by.x = names(B), by.y = names(A))

标签: r dataframe for-loop


【解决方案1】:

我过去用过的东西:

i = interaction(A,sep=":")%in%interaction(B,sep=":")
i
TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE

A[i,]
  x y
1 1 2
4 1 6
5 1 2
7 3 4

这里所做的是将列与您确定不会在数据中遇到的符号 (:) 连接,然后比较这两个向量。它为我节省了很多时间。

【讨论】:

猜你喜欢
  • 2023-01-08
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多