如何在所有列中选择具有共同标签的所有列



我有一个带有数百列的 SparkDataFrame,我只想选择那些带有"时间"一词的 CC_1。

,而不是这样做类似的事情必须手动编写列的所有名称:

df_selection <- SparkR::select(df, "TRT_time", "Flight_time", "SS_time", ...)

我想做以下操作:

df_selection <- SparkR::select(df, like('^time.*?'))

在sparkr?中是否有一种很好的方法?我是R中的一个重点,对不起,如果这是非常简单的问题,但我无法绕过它。

谢谢!

即使是SparkDataFrame,也可以使用names()访问列名。然后,您可以使用grepl()查找模式的匹配。

cols <- names(df)
head(select(df, cols[grepl('^time.*?', names(df))]))

返回:

            time_hour
1 2013-01-01 06:00:00
2 2013-01-01 06:00:00
3 2013-01-01 06:00:00
4 2013-01-01 06:00:00
5 2013-01-01 07:00:00
6 2013-01-01 06:00:00

评论后更新:

最好的方法是将其包括在OR,即您子集col的位置。

head(SparkR::select(df, cols[grepl('^time.*?', names(df)) | cols == "airline_iata"]))

注意:您还可以创建一个类似于此c(cols[grepl('^time.*?', names(df))], 'airline_iata')的字符向量,但是如果找不到列名,则会引发错误。airline_iata' is not in名称(df)`。

相关内容

  • 没有找到相关文章

最新更新