如何 select 在 R 中使用公共标签的所有列?
How to select in R all columns with a common tag?
我有一个包含数百列的 SparkDataFrame
,我只想 select 那些上面有单词 "time" 的列。
而不是像这样必须手动写入列的所有名称:
df_selection <- SparkR::select(df, "TRT_time", "Flight_time", "SS_time", ...)
我想做这样的事情:
df_selection <- SparkR::select(df, like('^time.*?'))
在 SparkR 中有一个很好的方法吗? SQL like 运算符的等价物?我是 R 的初学者,很抱歉,如果这是一个非常简单的问题,但我无法理解它。
谢谢!
您可以使用 names()
访问列名,即使它是 SparkDataFrame
。然后您可以使用 grepl()
来查找与模式匹配的内容。
cols <- names(df)
head(select(df, cols[grepl('^time.*?', names(df))]))
哪个returns:
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')
,但如果未找到列名,Spark 会抛出错误。 airline_iata'is not in
名称(df)`.
我有一个包含数百列的 SparkDataFrame
,我只想 select 那些上面有单词 "time" 的列。
而不是像这样必须手动写入列的所有名称:
df_selection <- SparkR::select(df, "TRT_time", "Flight_time", "SS_time", ...)
我想做这样的事情:
df_selection <- SparkR::select(df, like('^time.*?'))
在 SparkR 中有一个很好的方法吗? SQL like 运算符的等价物?我是 R 的初学者,很抱歉,如果这是一个非常简单的问题,但我无法理解它。
谢谢!
您可以使用 names()
访问列名,即使它是 SparkDataFrame
。然后您可以使用 grepl()
来查找与模式匹配的内容。
cols <- names(df)
head(select(df, cols[grepl('^time.*?', names(df))]))
哪个returns:
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')
,但如果未找到列名,Spark 会抛出错误。 airline_iata'is not in
名称(df)`.