r - 查找多个数据集共有的列
问题描述
我有多个包含几列的数据集。我想提取所有数据集共有的列。例如。如果所有数据集都有一个名为“id”或“Age”的列,我想提取这些。我如何知道所有数据集共有哪些列。
最初我想使用 head 函数,然后通过这些值来检查相似之处。但如果有多个数据集,这可能会变得非常乏味。
解决方案
我们可以使用Reduce
和intersect
Reduce(intersect, lapply(mget(ls(pattern = "df\\d+")), names))
#[1] "a" "c"
pattern
参数 inls()
应包括您的数据框遵循的模式。在这个例子中,我认为数据框df1
是df2
和df3
。所以它遵循一个模式"df"
,后跟一个我在pattern
参数 ( df\\d+
) 中提到的数字。您需要根据数据框具有的模式更改此设置,或者如果它们没有任何模式,您也可以手动将它们包含在列表中。
Reduce(intersect, lapply(list(df1, df2, df3), names))
#[1] "a" "c"
如果要对公共列进行子集化
list_df <- mget(ls(pattern = "df\\d+"))
common_cols <- Reduce(intersect, lapply(list_df, names))
lapply(list_df, `[`, common_cols)
#$df1
# a c
#1 1 11
#2 2 12
#3 3 13
#4 4 14
#5 5 15
#$df2
# a c
#1 1 11
#2 2 12
#3 3 13
#4 4 14
#5 5 15
#$df3
# a c
#1 1 11
#2 2 12
#3 3 13
#4 4 14
#5 5 15
数据
df1 <- data.frame(a = 1:5, b = 2:6, c = 11:15)
df2 <- data.frame(a = 1:5, c = 11:15)
df3 <- data.frame(a = 1:5, b = 2:6, c = 11:15, d = 21:25)
推荐阅读
- java - 将 Spark Java 数据集保存到某个位置时出现 NullPointerException
- java - Set TCP Client received data (External Thread) to TextView (Main Thread)
- oracle-sqldeveloper - How can I get one particular value out of this table?
- c - 如何将文件输入中的字符串数组存储到C中的struct元素中?
- python - Flask Restful:将 CSV 文件转换为 JSON 对象
- r - R - 如何迭代 4D 矩阵的每个切片
- sql-server-express - SQL Server Management Studio 未打开文件
- javascript - Tabulator - How to Clear a Selector Filter
- laravel - Laravel / Zend Barcode render strange codebar
- python - 在神经科学实验中集成实验室笔记本、实验设置规范、行为跟踪和 ephys 数据