【发布时间】:2012-03-10 13:01:04
【问题描述】:
我是一个 R 初学者,但很难解决以下非常简单的问题; 我有两个数据框(All_df、Bad_df)并想生成第三个这样的 All_df – Bad_df = Good_df
> All_df
Row# Originator Recipient Date Time
4 1 6 2000-05-16 16:15:00
7 2 7 2000-05-16 16:25:00
22 2 4 2000-07-04 18:05:00
25 2 9 2000-08-07 05:23:00
10 3 2 2000-06-17 18:07:00
13 4 8 2000-06-21 06:49:00
> Bad_df
Row# Originator Recipient Date Time
4 2 6 2000-05-16 16:15:00
7 2 7 2000-05-16 16:25:00
22 6 4 2000-07-04 18:05:00
25 12 9 2000-08-07 05:23:00
10 30 2 2000-06-17 18:07:00
13 32 8 2000-06-21 06:49:00
I want to generate Good_df similar to this:
> Good_df
Row# Originator Recipient Date Time
4 1 6 2000-05-16 16:15:00
10 3 2 2000-06-17 18:07:00
13 4 8 2000-06-21 06:49:00
基本上我需要一个函数来搜索 All_df$ Originator 中出现在 Bad_df$ Originator 中的值,在将剩余值返回到 Good_df 之前消除任何匹配项。
我试过了
Good_df <-subset(All_df, Originator %in% Bad_df$Originator)
但是每个 df 的 nrows 看起来有点不对劲!
> nrow(All_df)
[1] 26,032
> nrow(Bad_df)
[1] 1,452
> nrow(Good_df)
[1] 12,395
任何帮助将不胜感激。
【问题讨论】:
-
你的意思是
Good_df <-subset(All_df, ! Originator %in% Bad_df$Originator)?注意感叹号。 -
@flodel。看起来像一个答案。为什么不发帖?可以评论为什么重复可能对总计问题产生影响。