R:从数据框列表中选择列,而一些数据框中不存在某些列

马卡

我有一个数据框列表,只有几个共同的列。我有一个列向量希望保留。但是,有些数据框恰好具有这些列,有些则缺少其中的几列。

如果每个数据框都包含相同的列,则只需使用subset(df, select = c("column", "names"))我要选择的列即可。但是,如何只选择存在的列?

我有一个虚拟的示例,但是我希望在列表上使用maplapply功能,因为我的真实数据中有很多数据框。

我的虚拟示例:

df1<- data.frame(a  = seq(0,5),
                 b  = seq(5,10),
                 cc = seq(10,15))

df2<- data.frame(a  = seq(0,5),
                 b  = seq(5,10),
                 d = seq(10,15))


ls <-list(df1, df2)

# select columns,  "cc" column is missing from df2
keep<-c("b", "cc")

如何修改此功能以仅选择数据框中存在的列?

lapply(ls, function(x) subset(x, select = keep) )

列数不均的预期输出:

[[1]]
   b cc
1  5 10
2  6 11
3  7 12
4  8 13
5  9 14
6 10 15

[[2]]
   b 
1  5 
2  6 
3  7 
4  8 
5  9 
6 10 
太太

您可以使用以下intersect功能:

> intersect(c("a", "b", "c"), c("a", "b"))
[1] "a" "b"

即像这样修改您的功能:

> lapply(ls, function(x) subset(x, select = intersect(keep, colnames(x))))
[[1]]
   b cc
1  5 10
2  6 11
3  7 12
4  8 13
5  9 14
6 10 15

[[2]]
   b
1  5
2  6
3  7
4  8
5  9
6 10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择数据框中不存在的列

根据数据框中的WHERE选择一些列

连接列并在Pyspark数据框中选择一些列

在大表中选择某些 ID 不存在于同一列中的数据。加快查询

删除数据框中的某些列-忽略索引中不存在的项目

熊猫数据框fillna()仅存在一些列

选择数据框python熊猫的一些列

在多索引数据框中创建不存在的列

pyspark 数据框中不存在列?

数据框中的列似乎不存在

即使其中一列不存在,如何设置数据框中的列?

从数据框中选择存在的列

从数据框中删除行,因为另一个数据框中不存在列值

根据状态不存在值将R数据框列插入数据框

从熊猫数据框中选择多行,其中一列包含一些值,如NaN

比较数据框和列表并在R中的df中存在或不存在数据

在数据框列表中选择一列

从熊猫数据框列表中选择数据框列

将一些功能应用于列表中数据框的列

连接两个数据框,从一个中选择所有列,从另一个中选择一些列

在列表中嵌入的数据框中选择特定的列

访问R数据框中不存在的数据

从数据框中删除列表中不存在的行

在R中的嵌套数据框中添加一些分组列

从R数据框列中选择值

合并数据框并保留一些列,同时重复某些列 pandas

当每个数据框中不存在所有这些列时,如何从数据框列表中删除特定的列

从 pyspark 数据框中删除那些列中的条目不存在于字典的键列表中的行

根据R中的动态值从数据框中选择列