如何检查R中数据框中的列是否相同[生成矩阵]

时间:2017-07-07 11:57:06

标签: r dataframe

我有一个大数据帧ncol = 220我想比较列,看它们是否相同,并生成一个易于识别的矩阵。

所以我拥有的是

      x    y   z
1   dog   dog   cat    
2   dog   dog   dog
3   cat   cat   cat

我想要什么

     x     y     z
x   -     True   False
y   True     -   False
z   False False   -

有没有办法在R?

中使用same()来执行此操作

2 个答案:

答案 0 :(得分:4)

赞美@ Cath的关于List<T>的评论,这很简单,

stringdist

答案 1 :(得分:3)

可能效率不高但你可以尝试:

seq_col <- seq_len(ncol(df))
sapply(seq_col, function(i) sapply(seq_col, function(j) identical(df[, i], df[, j])))
      # [,1]  [,2]  [,3]
# [1,]  TRUE  TRUE FALSE
# [2,]  TRUE  TRUE FALSE
# [3,] FALSE FALSE  TRUE

它给你你想要的东西(除了对角线,这里都是TRUE)但是必须有一个包含一个函数的包来创建一个基于字符向量的距离矩阵。也许有stringdist的东西?