【发布时间】:2019-09-27 12:14:20
【问题描述】:
我的代码有一些困难,希望你们中的一些人能提供帮助。
数据集如下所示:
df <- data.frame("group" = c("A", "A", "A","A_1", "A_1", "B","B","B_1"),
"id" = c("id1", "id2", "id3", "id2", "id3", "id5","id1","id1"),
"time" = c(1,1,1,3,3,2,2,5),
"Val" = c(10,10,10,10,10,12,12,12))
“group”表示个人“id”所在的组。“A_1”表示一个主题已离开该组。
例如,一个主题“id1”离开“组 A”,成为组“A_1”,其中只有“id2”和“id3”是成员。同样,“id5”离开组 B,成为“B_1”,只有 id1 作为成员。
我希望在最终数据集中拥有相反类型的组标识,应该如下所示:
final <- data.frame("group" = c("A", "A", "A","A_1", "B","B","B_1"),
"id" = c("id1", "id2", "id3", "id1", "id5","id1","id5"),
"time" = c(1,1,1,3,2,2,5),
"Val" = c(10,10,10,10,12,12,12),
"groupid" = c("A", "A", "A","A", "B","B","B"))
其中“A_1”和“B_1”仅表示已离开原组的科目,分别为“id1”和“id5”,而不是标识剩余科目。
有人对我如何系统地做到这一点有建议吗?
提前感谢您的帮助。
跟进:
我的数据比上面的例子稍微复杂一些,因为治疗有多个“出口”,而且组标识符可以具有不同的字符长度(例如 AAA 和 B)。数据看起来更像如下:
df2 <- data.frame("group" = c("AAA", "AAA", "AAA","AAA","AAA_1","AAA_1", "AAA_1","AAA_2","AAA_2","B","B","B_1"),
"id" = c("id1", "id2", "id3","id4", "id2", "id3","id4", "id2","id3", "id5","id1","id1"),
"time" = c(1,1,1,1,3,3,3,6,6,2,2,5),
"Val" = c(10,10,10,10,10,10,10,10,10,12,12,12))
id1 在时间 3 离开组 AAA,成为组 AAA_1,而在时间 6,id4 也离开组 AAA,成为组 AAA_2。如前所述,我希望带有“_”的组来标识离开该组的那些 id,而不是剩下的那个。因此最终的数据集应该是这样的:
final2 <- data.frame("group" = c("A", "A", "A","A","A_1","A_2",
"B","B","B_1"),
"id" = c("id1", "id2", "id3","id4", "id1", "id4", "id5","id1","id5"),
"time" = c(1,1,1,1,3,6,2,2,5),
"Val" = c(10,10,10,10,10,10,12,12,12))
谢谢你帮我解决这个问题
【问题讨论】:
-
你能提供更多关于
groupid的细节吗? -
确定什么样的细节?基本上,该组的成员接受“Val”治疗。我感兴趣的是明确区分那些停止接受治疗的受试者,因此那些退出该组的受试者。然而,构建数据集以指示继续接受治疗的受试者。因此,我想找到一种“反转”组标识的方法,以便“A_1”和“A_2”表示停止接受治疗的受试者
-
请注意,在一个小组中,多个人可以在不同的时间停止接受治疗。因此“A_1”和“A_2”可以存在,其中“id1”、“id2”在不同时间停止接受治疗。理想情况下,这应该反映在我的新数据中
-
对不起,我不明白你在做什么
-
对不起,我可能没有很好地解释自己。抽象的很简单。我会再尝试。基本上,带有“_”符号的组是一个人离开该组的组。例如,在我的示例中,“B_1”是 id5 离开的组。我想要实现的是一个分类,我的观察是 id5,“B_1”。但是,在当前数据集中,观察“B_1”与留在组中的个体相关联,即观察是 B_1,id1(即留在组中的个体)。我正在尝试找到一种方法来系统地重新排列此分类。
标签: r data-manipulation