在邻接数据框中转换事件列表数据

我有一个df,其中每列代表一个事件,并且单元格中有个人,像这样:

df=data.frame(topic1=c("a","b","c","d"),topic2=c("e","f","g","a"),topic3=c("b","h"))

我需要像这样在邻接df中对其进行转换:

        topic1 topic2   topic3
   a    1      1        0
   b    1      0        1
   c    1      0        1
   d    1      0        0
   e    0      1        0
   f    0      1        0
   g    0      1        1
   h    0      0        1

THX!

inuyasha7 回答:在邻接数据框中转换事件列表数据

表格levs包含按级别排列的级别,然后为df的每一列确定其中有哪些税率。这提供了一个逻辑矩阵,我们可以使用+将其转换为数字。

levs <- sort(unique(unlist(df)))   # a b c d e f g h
+ sapply(df,function(x) levs %in% x)

给予:

     topic1 topic2 topic3
[1,]      1      1      0
[2,]      1      0      1
[3,]      1      0      1
[4,]      1      0      0
[5,]      0      1      0
[6,]      0      1      0
[7,]      0      1      1
[8,]      0      0      1

最后一行可以写得更紧凑:

+ sapply(df,`%in%`,x = levs)
本文链接:https://www.f2er.com/3129660.html

大家都在问