@Ananda 的答案要好得多,但我想我会使用qdap提出另一种方法。它仅在“有人会多次参加会议”的情况下才会发光。
正如阿南达所指出的,我包括了一个“有人会不止一次参加会议”的例子。在这种情况下,使用该adjmat
函数并提取布尔矩阵可能会有所帮助。
双重参加者的数据:
## dat <- read.table(text="Event Participant
## ConferenceA John
## ConferenceA Joe
## ConferenceA Mary
## ConferenceB John
## ConferenceB Ted
## ConferenceB Ted
## ConferenceC Jessica ", header=TRUE)
计数表:
library(qdap)
wfm(dat[, 1], dat[, 2], lower.case = FALSE)
## > wfm(dat[, 1], dat[, 2], lower.case = FALSE)
## Jessica Joe John Mary Ted
## conferenceA 0 1 1 1 0
## conferenceB 0 0 1 0 2
## conferenceC 1 0 0 0 0
使用 mtabulate
with(dat, mtabulate(split(Participant, Event)))
## Jessica Joe John Mary Ted
## ConferenceA 0 1 1 1 0
## ConferenceB 0 0 1 0 2
## ConferenceC 1 0 0 0 0
一个布尔矩阵:
adjmat(wfm(dat[, 1], dat[, 2], lower.case = FALSE))$boolean
## > adjmat(wfm(dat[, 1], dat[, 2], lower.case = FALSE))$boolean
## Jessica Joe John Mary Ted
## conferenceA 0 1 1 1 0
## conferenceB 0 0 1 0 1
## conferenceC 1 0 0 0 0