找出不同文件中哪些列是相同的

问题描述 投票:0回答:1

我在全局环境中的 R 中有一个数据框:

file_1 <- data.frame(A = 1:5, B = 6:10, C = 11:15)
file_2 <- data.frame(A = 1:5, D = 16:20, E = 21:25)
file_3 <- data.frame(B = 6:10, C = 11:15, F = 26:30)

我想制作一个矩阵,帮助我了解哪些列名称在所有数据框中常见,哪些不是。

我尝试手动执行此操作:

for (file in files) {
  data <- get(file)
  column_names[[file]] <- colnames(data)
}

all_columns <- unique(unlist(column_names))
matrix <- sapply(column_names, function(cols) all_columns %in% cols)
rownames(matrix) <- all_columns

matrix_df <- as.data.frame(matrix)

print(matrix_df)

这是在 R 中执行此操作的正确方法吗?

顺便说一句,如果它们在列表中,我想我们可以这样做:

all_columns <- unique(unlist(lapply(mylist, colnames)))

matrix <- sapply(mylist, function(df) all_columns %in% colnames(df))
rownames(matrix) <- all_columns

matrix_df <- as.data.frame(matrix)

print(matrix_df)
r
1个回答
2
投票

你的意思是像下面这样的矩阵吗?

> table(stack(lapply(mget(ls(pattern = "file_")), names)))
      ind
values file_1 file_2 file_3
     A      1      1      0
     B      1      0      1
     C      1      0      1
     D      0      1      0
     E      0      1      0
     F      0      0      1
© www.soinside.com 2019 - 2024. All rights reserved.