我有100万行以上的数据,列上的是channel_name。收集数据的人似乎并不在乎他们以大约10种不同的变化形式进入了一个频道,其中很多变体包含@符号。谷歌搜索没有给我任何体面的文档,任何人都可以指导我一些有用的东西?编辑统一数据的分类数据
回答
在一定程度上的答案是,“这取决于”。您的实际数据将确定最佳解决方案;并且可能没有一个真正的解决方案 - 您可能需要尝试几件事情,并且可能会有比您想要的更多的手动工作。
一种选择是基于你所看到的建立一个格式。该格式可以将各种值转换为一个一致的值,或者转换为数字类别(然后用显示一致值的格式覆盖)。
例如,您可能有“通道”的零售商店: 数据有; infile datalines truncover; 输入@ 1个频道$ 8。 datalines; 百思买 百思买 BB ;;;; 跑;
所以,你可以做两件事情之一:
proc format;
value $channel
"Best Buy","BB","BestBuy" = "Best Buy";
quit;
data want;
set have;
channel_coded = put(channel,$channel.);
run;
或者,你可以这样做:
proc format;
invalue channeli
"Best Buy", "BB","BestBuy" = 1
;
value channelf
1 = "Best Buy"
;
quit;
data want;
set have;
channel_coded = input(channel,CHANNELI.);
format channel_coded channelf.;
run;
,你要做的就是在很大程度上取决于你 - 后者让你在长期更大的灵活性运行,例如Sears和K-Mart合并时,采用2和16,然后格式化为Sears,而不是改变字符格式的存储值 - 在KMart分离时更容易回滚再次。
这确实需要一些手工的工作,虽然,你必须在这里手工编写代码,或者开发一些方法来确定编码是什么。您可以使用proc格式的other
选项轻松识别新值并将其添加到格式中(可以从数据集中导出,而不是手写代码),但在一天结束时,您确定的实际值解决方案最适合于确定什么是“最佳购买”的实际工作,而手边解决方案(每次有新的价值出现时,都由一个人来看待并编码)最终可能是最好的。
这是一个好方法。不仅格式非常高效(内存查找),它们比哈希表更容易“读取”(对于其他程序员来说,更好地了解您所做的工作) –
- 1. ZF2 - 仅编辑数据的一部分
- 2. PHP编辑数据库中的数据
- 3. 一类数据分类tensorflow
- 4. jqGrid - 编辑数据
- 5. 编辑数据gridview
- 6. asp.net编辑数据
- 7. PGAdmin编辑数据
- 8. 编辑xml数据
- 9. 编辑SQL数据
- 10. 编辑数千XML数据
- 11. PHP - 以分贝编辑数据问题
- 12. WPF:MVVM和编辑分层数据
- 13. 编辑可编辑数据表时丢失数据(JSF2)
- 14. 编辑核心数据关系数据
- 15. 编辑数据库元数据
- 16. 分类数据库数据
- 17. Umbraco - 编辑custiom数据类型
- 18. jQuery的数据表编辑一行
- 19. 编辑mysql数据库中的一行
- 20. 编辑数据库中的一行
- 21. Easytable Azure的编辑数据
- 22. 编辑ComboBox的数据源
- 23. 与递归数据类型的统一
- 24. 分类数据
- 25. 分类数据
- 26. 数据分类
- 27. 分类数据
- 28. 数据分类
- 29. 在数据表中编辑一行C#
- 30. 下一页,用于数据编辑
尝试模式匹配[这里](http://support.sas.com/kb/25/278.html)使用PROC SQL – scott
由于它是由SAS拥有,机构Dataflux也许是值得一提。这是一个完全针对数据清理的不同产品(与SAS紧密集成),其中包括您提到的内容。当然,如果这真的是你遇到这种问题的唯一例子,那么这很可能是过度的。 – mvherweg