我有一个数据列表,表明出席这样的 session :
Event Participant
ConferenceA John
ConferenceA Joe
ConferenceA Mary
ConferenceB John
ConferenceB Ted
ConferenceC Jessica
我想创建以下格式的二进制指标出勤矩阵:
Event John Joe Mary Ted Jessica
ConferenceA 1 1 1 0 0
ConferenceB 1 0 0 1 0
ConferenceC 0 0 0 0 1
有没有办法在 R 中做到这一点?
最佳答案
假设您的 data.frame
被称为“mydf”,只需使用 table
:
> table(mydf)
Participant
Event Jessica Joe John Mary Ted
ConferenceA 0 1 1 1 0
ConferenceB 0 0 1 0 1
ConferenceC 1 0 0 0 0
如果有可能有人不止一次参加 session ,领导
table
要返回大于 1 的值,您可以简单地重新编码所有大于 1 到 1 的值,如下所示。temp <- table(mydf)
temp[temp > 1] <- 1
请注意,这将返回
table
.如果你想要一个 data.frame
要退回,请使用 as.data.frame.matrix
:> as.data.frame.matrix(table(mydf))
Jessica Joe John Mary Ted
ConferenceA 0 1 1 1 0
ConferenceB 0 0 1 0 1
ConferenceC 1 0 0 0 0
在上面,“mydf”定义为:
mydf <- structure(list(Event = c("ConferenceA", "ConferenceA",
"ConferenceA", "ConferenceB", "ConferenceB", "ConferenceC"),
Participant = c("John", "Joe", "Mary", "John", "Ted", "Jessica")),
.Names = c("Event", "Participant"), class = "data.frame",
row.names = c(NA, -6L))
请在 future 以类似的方式共享您的数据。
关于r - 在 R 中创建一个二元指标矩阵( bool 矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431524/