[英]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.