【问题标题】:Subsetting SparkR DataFrame based on column values matching another DataFrame's column values根据与另一个 DataFrame 的列值匹配的列值对 SparkR DataFrame 进行子集
【发布时间】:2017-06-13 18:38:02
【问题描述】:

我有两个 SparkR 数据帧,newHiresDF 和 salesTeamDF。我想根据salesTeamDF$name 中的newHiresDF$name 的值获取newHiresDF 的子集,但我想不出办法。下面是我尝试的代码。

#Create DataFrames
newHires <- data.frame(name = c("Thomas", "George", "Bill", "John"),
    surname = c("Smith", "Williams", "Brown", "Taylor"))
salesTeam <- data.frame(name = c("Thomas", "Bill", "George"),
    surname = c("Martin", "Clark", "Williams"))
newHiresDF <- createDataFrame(newHires)
salesTeamDF <- createDataFrame(salesTeam)
display(newHiresDF)

#Try to subset newHiresDF based on name values in salesTeamDF
#All of the below result in errors
NHsubset1 <- filter(newHiresDF, newHiresDF$name %in% salesTeamDF$name)
NHsubset2 <- filter(newHiresDF, intersect(select(newHiresDF, 'name'), 
    select(salesTeamDF, 'name')))
NHsubset3 <- newHiresDF[newHiresDF$name %in% salesTeamDF$name,] #This is how it would be done in R

#What I'd like NHsubset to look like:
    name  surname
1 Thomas    Smith
2 George Williams
3   Bill    Brown

如果您愿意,PySpark 代码也可以使用。

【问题讨论】:

标签: apache-spark pyspark spark-dataframe sparkr


【解决方案1】:

想出一个事后看来很简单的解决方案:只需使用merge。

NHsubset <- merge(newHiresDF, select(salesTeamDF, 'name'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2012-10-15
    • 2021-11-22
    • 1970-01-01
    • 2016-03-20
    • 2021-11-09
    相关资源
    最近更新 更多