【发布时间】:2019-06-18 15:34:22
【问题描述】:
我的 TeamName 列不反映唯一的团队名称。因此,我必须找到一种方法来通过唯一的 RaterID 和 RateeID 列来识别唯一的团队。我的数据由团队内的二元信息组成。因此,如果 RateeID 列中出现了 RateeID 列中的数字,则表示两人在同一个团队中。 我正在尝试创建一个唯一的团队 ID,但区分团队的唯一方法是当 RaterID 也出现在 RateeID 列中时。这是在团队中以循环方式收集的二元数据。我想我可以创建一个新列,将 RaterID 和 RateeID 结合起来,然后创建一个值(也许使用 rank 函数?),这将帮助我区分团队。我的数据包含超过 3000 个团队,所以我想我会先 group_by 团队名称,然后检查 dyads 的共性,以便创建一个新列,稍后我可以将其粘贴到 TeamName 中以创建一个唯一的团队 ID。这是我在这里的第一个问题,所以希望我能很好地表达这一点……
我是 r 新手,不知道该尝试什么...
#creating dataframe
df<-data.frame(RaterID = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 5, 5, 6, 6, 8, 8, 9, 9, 10, 10),
RateeID = c(2, 3, 4, 1, 3, 4, 1, 2, 4, 6, 7, 5, 7, 9, 10, 8, 10, 8, 9),
TeamName = c('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'))
#group by TeamName to ease calculating unique team ID for a big data
library(dplyr)
df %>%
group_by(TeamName)
这就是我迷路的地方......我如何编写一个函数来说明如果 RaterID 也出现在组内的 RateeID 中(即 TeamName),然后创建一个唯一标识符。也许使用排名功能?然后我可以用它把它和 TeamName 结合起来,最后得到一个唯一的团队 ID。
我想要的结果是:
RaterID RateeID TeamName UniqueTeamID
1 2 A A1
1 3 A A1
1 4 A A1
2 1 A A1
2 3 A A1
2 4 A A1
3 1 A A1
3 2 A A1
3 4 A A1
5 6 A A2
5 7 A A2
6 5 A A2
6 7 A A2
8 9 B B1
8 10 B B1
9 8 B B1
9 10 B B1
10 8 B B1
10 9 B B1
【问题讨论】:
标签: r syntax dplyr grouping unique