【发布时间】:2017-08-23 15:28:37
【问题描述】:
我希望创建在某些条款中出现的 Contact.ID 的子集,而不是在其他条款中。
为了更好地解释,这是我的数据集的快照:
df <- c(Contact.ID, Date.Time, Age, Gender, Attendance)
Contact.ID Date Time Age Gender Attendance Term
1 A 2012-10-06 18:54:48 37 Male 30 Term1
2 A 2013-03-12 20:50:18 37 Male 30 Term2
3 A 2013-05-24 20:18:44 37 Male 30 Term3
4 B 2012-11-15 16:58:15 27 Female 40 Term1
5 B 2012-12-23 10:57:02 27 Female 40 WB
6 B 2013-01-11 17:31:22 27 Female 40 Term2
7 B 2013-02-18 18:37:00 27 Female 40 Term2
8 C 2013-02-22 17:46:07 40 Male 5 Term2
9 C 2013-02-27 11:21:00 40 Male 5 Term2
10 D 2012-10-28 14:48:33 20 Female 12 Term1
我的问题是,我需要根据 Contact.ID 创建进一步的细分
所以我要创建的组是:
仅术语 1 --> 仅存在于术语 1 中但不存在于任何其他术语中的 ID(例如 ID D)
仅术语 2 ---> 仅存在于术语 2 中但不存在于任何其他术语中的 ID(例如 ID C)
术语 1 和 2 --> 仅在术语 1 和 2 中而不是术语 3 中的 ID(例如 ID B)
术语 1 & 2 & 3 --> 存在于所有术语中的 ID(例如 ID A)
我尝试了向subset 添加条件的不同方法,还尝试了df[ which ()] 之类的函数和subset(df, () & () & !()),但我似乎无法正确处理。
有什么建议吗?我真诚地感谢您的帮助。
【问题讨论】:
-
你可以在第一学期尝试
intersect(!(Term1$Contact.ID %in% Term2$Contact.ID), !(Term1$Contact.ID %in% Term3$Contact.ID))之类的独占。等等。 -
如果无法轻松重现您的示例,这很难提供帮助,但是您是否尝试过根据您为 Term1、2、3 设置的条件在数据框中创建一个标志变量? (例如,创建一个新列,其中 1 = term1 时间范围内的所有行,2 = term2 时间范围内的所有行等)然后您应该也可以轻松地进行子集化。它还会阻止您拥有许多数据帧。
-
@abhiieor 感谢您的建议!不幸的是,这只会创建一个
valueof 'logi [1 : 2] False True`,所以它似乎不起作用。 -
@Sheila,不,我还没有尝试过!好想法!我现在就试一试。
-
@Sheila,嘿,我已经设法创建了一个新列来定义日期所属的术语,但我仍然坚持如何定义下一步。现在我只有一个额外的列来说明第一个区别,但是我有太多的 ID 无法手动描述下一步......有什么想法吗?