检查 R 中多个数据帧中的通用 ID

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

我有多个共享公共列的数据框。

dfs <- list(DB07, DB08, DB09, DB10, DB11, DB12, DB13, DB14, DB15, DB16, DB17, DB18, DB19, DB20, DB21)

我想检查 2 个数据帧的任意组合是否具有共同的 id。 例如DB07$ID、DB08$ID 是否有共同的 ID? 因为我很确定是有的。 当我制作DB时,绑定dfs中的所有行, 长度(唯一(DB $ ID))和长度(DB $ ID)不匹配。

提前谢谢您。

r dataframe
1个回答
0
投票

您可以

unlist()
,然后找到
duplicated()
值。确保您的列表具有正确格式的名称,以给出数据框的名称,并用点与行号分隔。

ids <- unlist(lapply(dfs, \(x) x$ID))
ids[duplicated(ids)]
#   DB2.1   DB2.2   DB3.2   DB4.4   DB5.7   DB5.8   DB6.4   DB7.1   DB7.4   DB7.5   DB7.6   DB7.7   DB7.8   DB7.9   DB8.2   DB8.4   DB8.7   DB8.9  DB8.10   DB9.8 
#       7      55      51      70      43       7      78      46      55      98      68      12      51      16      82       3      85      52      25      24 
#   DB9.9  DB9.10  DB10.1  DB10.2  DB10.3  DB10.6  DB10.7  DB10.9 DB10.10 
#      12       9      55      75      63      26      48      37      91 

数据:

set.seed(100)
dfs <- lapply(1:10, \(i) data.frame(ID = sample(1:100, 10))) |>
    setNames(sprintf("DB%s.", 1:10))
© www.soinside.com 2019 - 2024. All rights reserved.