练习六
本次练习的处理数据是一份调查报告,这是一份某个APP在移动端及PC端用户使用体验的调用报告。点击下载这份名为Survery.csv的文件。
输入数据
这份名为Survery.csv的文件内容如下图所示:
Mobile App开头的列代表使用移动端信息,以Online Interface开头的列代表使用PC端的信息。
需求
- 使用BaskAdapt加载这份数据。
添加转置节点,将Mobile App开头的列和Online Interface开头的列进行列转行。
- 转置后新列名为Mobile App和Online Interface。
- 转置后使用移动端和使用PC端的数据各占一列。
- 转置后每个用户对应的移动端和PC端数据各有5条。
添加一个清理字段,对转置名称里进行拆分,抽取出其中的问题部分
- 就是将该列中以Mobile App开头和Online Interface开头的内容去除就是问题部分。
- 对拆分出来的部分列重命名为Question。
- 原转置名称列删除。
- 将Question列中的Overall Rating值排除,也就是将总评分数据删除,使得每个客户下都在PC端和移动端下都只有四个问题。
添加一个聚合节点,用于计算每个客户下Mobile App和Online Interface字段的平均分
- 以Customer ID为分组字段,Mobile App和Online Interface添加到聚合节点中,聚合方式改为平均值。
- 结果为由Customer ID和Mobile App及Online Interface组成的三列数据。
- 添加一个清理节点。
- 创建一个名为Difference的计算字段,值为Online Interface列减去Mobile App列,以获取每个用户下PC端与移动端平均值的差值。
根据这个名为Difference列产生的差值,对客户进行分类。
- 创建一个名为Preference的计算字段,表达式内容如下所示:
if ([Difference]<=-2){ return "Mobile App Superfan" }else if ([Difference]<=-1){ return "Mobile App Fan" }else if ([Difference]>=2){ return "Online Interface Superfan" }else if ([Difference]>=1){ return "Online Interface Fan" }else{ return "Neutral" }
该段脚本含义比较简单,就是根据上一步产生的名为Difference的计算字段值大小返回一个字符串。
根据Preference列产生的类别值,计算每个类别中客户的占比,四舍五入到小数点后一位。
- 添加一个聚合节点,以Preference列对数据进行分组,添加Customer ID列,聚合方式为计数。这样就可以获取每个类别下客户的数量。
- 添加一个清理节点,创建一个名为Total Customers计算字段,用于计算总的用户数量(Customer ID数量),该计算字段表达式内容如下:
{Fixed : Sum([Customer ID]))}
该表达式采用Fixed表达式,因为要计算所有数据的Customer ID值的总数,所以Fixed表达式没有定义列。
- 创建一个名为% of Total的计算字段,表达式内容如下:
Round(([Customer ID]/[Total Customers])*100,1)
- 通过上面的表达式就可以计算出每个Preference类别值客户的占比,最后使用Round函数四舍五入到小数点后一位。
输出
输出结果为两个字段,五行数据。