簡體   English   中英

從R中的標簽列表列表創建表

[英]Create table from list of tags lists in R

我在R中有一個帶有標簽的大列表。示例:

[[1]]
[1] "A" "C" "E" "F"

[[2]]
[1] "B" "C" "G"

[[3]]
[1] "A"

[[4]]
[1] "B"

[[5]]
[1] "C" "E"

[[6]]
[1] "G"

我需要構建一個包含兩個值的表:1 /( - 1),表示行是否有標記(1)或不是(-1)。

    "A" "B" "C" "E" "F" "G"
[1]  1  -1  -1   1   1  -1
[2] -1   1   1  -1  -1   1
[3]  1  -1  -1  -1  -1  -1
[4] -1   1  -1  -1  -1  -1
[5] -1  -1   1   1  -1  -1
[6] -1  -1  -1  -1  -1   1

這是給你的方法。

首先,我們命名我們的列表(否則我們不能使用stack ):

names(dat) <- 1:length(dat)

然后我們把它變成長:

dat2 <- stack(dat)

讓我們的桌子變得簡單:

res <- with(dat2, table(ind, values))
res[res==0]<--1

>res
   values
ind  A  B  C  E  F  G
  1  1 -1  1  1  1 -1
  2 -1  1  1 -1 -1  1
  3  1 -1 -1 -1 -1 -1
  4 -1  1 -1 -1 -1 -1
  5 -1 -1  1  1 -1 -1
  6 -1 -1 -1 -1 -1  1

使用的數據:

dat <- list(c("A","C","E","F"),c("B","C","G"),"A","B",c("C","E"),"G")

我們可以使用mtabulate

library(qdapTools)
d1 <- mtabulate(l1)
d1[d1==0] <- -1
d1
#   A  B  C  E  F  G
#1  1 -1  1  1  1 -1
#2 -1  1  1 -1 -1  1
#3  1 -1 -1 -1 -1 -1
#4 -1  1 -1 -1 -1 -1
#5 -1 -1  1  1 -1 -1
#6 -1 -1 -1 -1 -1  1

數據

l1 <- list(c("A", "C", "E", "F"), c("B", "C", "G"), "A", "B", 
    c("C", "E"), "G")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM