簡體   English   中英

如何比較R中數據集中的多個列?

[英]How to compare multiple columns within a dataset in R?

我的數據集是這樣的..它具有比這更多的行和列:

           x1       x2      x3      x4
part 1      1       1       1       1
part 2      0       1       1       0
part 3      0       0       0       1
part 4      1       0       1       1
part 5      1       1       1       1

我想比較各種組合中的列(x1 x2,x1 x3,x1 x4,x1 x2 x3,x1 x2 x4,x1 x3 x4,x2 x3 x4,x1 x2 x3 x4)以找到最大的通用零件數。

我可以使用combn獲取列的各種組合,但是我不知道如何比較各種列。 all.equal需要2個不同的數據集,在這里我想比較單個數據集中的各個列。 我是初學者。請給我建議。 提前致謝!!

一種方法可能是使用outer 在此,定義了一個輔助函數comp_cols ,該函數接受兩個列名稱向量,並計算dat列是否相等。

# slightly modified data.frame from question
dat <- data.frame(x1=c(1,0,0,1,1), x2=c(1,1,0,0,1), x3=c(1,1,0,1,1), x4=c(1,0,0,1,1))

# compare function
comp_cols <- function(x,y) {
    ans <- rep(NA, length(x))
    for (i in seq_along(x)) ans[i] <- all(dat[,x[i]]==dat[,y[i]])
    return(ans)
}

# compare each combination
res <- outer(colnames(dat), colnames(dat), FUN=comp_cols)
rownames(res) <- colnames(dat)
colnames(res) <- colnames(dat)

這可能不是最有效的解決方案,因為結果矩陣是對稱的,因此只需要一半的計算。 如果計算時間成為問題,則使用combn可能會更快。

暫無
暫無

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

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