我有一个具有分类变量的数据集。我需要在该数据集中添加一列,以显示相应级别的频率。
例如,假设您有一个具有状态列的数据集。这是输入数据集。在输出数据集中,对于现在的每一行,还会有一列用于告诉我特定状态在数据集中出现的次数。
# Date_Built Square_Footage Num_Beds Num_Baths State Price
# 01/01/1920 1700 3 2 NY 700,000
# Date_Built Square_Footage Num_Beds Num_Baths State Price Freq_State
# 01/01/1920 1700 3 2 NY 700,000 4,500
在此示例中,添加了Freq_State
列,用于捕获NY
列中4500
出现State
次的信息
这是我到目前为止所做的,但它只给出了列的频率。我经历了类似的问题here,但两个答案都建议创建一个新视图。有没有办法可以直接添加此列而无需创建新表
select
count(grp_column) as freq_encode,
grp_column
from
df_sql_tbl
group by
grp_column
答案 0 :(得分:3)
Spark SQL应该支持窗口函数,因此,尝试使用它们
select *,
count(*) over (partition by state)
from your_table
答案 1 :(得分:1)
SELECT t1.*,
(SELECT count(*) cnt FROM df_sql_tbl WHERE state = t1.state)
FROM df_sql_tbl t1