一般,我们会通过很多的方法去处理数据 R、Python、Sql 语句等,今天我们用 shell 做一下简单的用户付费间隔的解析
首先,我们需要从源数据中取出你所需要的字段内容,比如 rfm 模型中付费玩家的列表 (rfm_play.txt)、rfm 模型中玩家的付费次数 (rfm_times)
我们已经拿到这 2 组现有的对我们有帮助的 list. 那么下一步就是对这三部分的数据进行运用
cat rfm-play.txt | while read line
do
end=`grep -w $line rfm-test.txt | tail -n 1 | awk -F ' ' '{print $3}'`
sec=`grep -w $line rfm-test.txt | tac | sed -n 2p | awk -F ' ' '{print $3}'`
done
把这两组数据记录到 rfmuniq.txt 中,来作为我们对时间戳运算的数据源
输出 $end 和 $sec 会发现, 我们回去了用户的最后一次付费和倒数第二次付费的时间戳,
既然有了两次付费的时间戳,那么, 我们就来做一下简单的数据运算,查看一下用户的两次付费间隔是多久呢?
cat rfm-play.txt | while read line
do
end1=`grep -w $line rfmuniq.txt | awk -F ',' '{print $3}' | tac | tail -n 1`
end2=`grep -w $line rfmuniq.txt | awk -F ',' '{print $3}' | tail -n 1`
echo $line " "$((((end1-end2))/1000/60))':min'
done
While 循环、grep、awk、sed、date 等方法,大家在熟练过程中可能需要摸索一下逻辑关系, 如果有什么问题可以在评论区留言