gpt4 book ai didi

r - 将个体列表转换为 R 中对的出现

转载 作者:行者123 更新时间:2023-12-01 07:36:59 25 4
gpt4 key购买 nike

我需要特定格式的 data.frame 进行社会结构分析。如何转换包含在多个事件中一起出现的个人列表的 data.frame:

my.df <- data.frame(individual = c("A","B","C","B","C","D"),
time = rep(c("event_01","event_02"), each = 3))

individual time
1 A event_01
2 B event_01
3 C event_01
4 B event_02
5 C event_02
6 D event_02

进入包含每对出现的数据框(包括 [A,A]; [B,B] 等对:
ind_1    ind_2   times
A A 0
A B 1
A C 1
A D 0
B A 1
B B 0
B C 2
B D 1
C A 1
C B 2
C C 0
C D 1
D A 0
D B 1
D C 1
D D 0

最佳答案

在基础 R 中,您可以执行以下操作:

data.frame(as.table(`diag<-`(tcrossprod(table(my.df)), 0)))
# individual individual.1 Freq
# 1 A A 0
# 2 B A 1
# 3 C A 1
# 4 D A 0
# 5 A B 1
# 6 B B 0
# 7 C B 2
# 8 D B 1
# 9 A C 1
# 10 B C 2
# 11 C C 0
# 12 D C 1
# 13 A D 0
# 14 B D 1
# 15 C D 1
# 16 D D 0
tcrossprod 为您提供以下信息:
> tcrossprod(table(my.df))
individual
individual A B C D
A 1 1 1 0
B 1 2 2 1
C 1 2 2 1
D 0 1 1 1

这基本上是您要查找的所有信息,但您希望它的形式略有不同,没有对角线值。

我们可以将对角线设置为零:
`diag<-`(theOutputFromAbove, 0)

然后,为了得到长格式,通过使用 matrix 欺骗 R 认为结果 table 是一个 as.table ,并使用 data.frametable 方法。

关于r - 将个体列表转换为 R 中对的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com