[简介]
常用网名: 猪头三
出生日期: 1981.XX.XX
QQ联系: 643439947
个人网站: 80x86汇编小站 https://www.x86asm.org
编程生涯: 2001年~至今[共22年]
职业生涯: 20年
开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
开发工具: Visual Studio、Delphi、XCode、Eclipse、C++ Builder
技能种类: 逆向 驱动 磁盘 文件
研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
[序言]
R语言中, 按行读取文件数据的时候, 如果数据存在多列, 最好为每一列指定类型, 不然R语言在解释数值类型会出现偏差. 另外, 股票数据加载之后, 你可能会进行多次处理, 比如rbind, cbind这类操作, 导致股票数据日期乱序了, 那么就需要重排.
[正确的加载数据方式, 解决数据精度丢失 和 排序]
比如, 有一个股票数据文件"002431-棕榈股份.txt", 内容如下:
20231229|2.47|2.54|2.65|2.44|517517.44
20231228|2.38|2.47|2.48|2.34|316899.00
20231227|2.34|2.42|2.53|2.33|362926.00
20231226|2.36|2.33|2.37|2.32|90035.00
20231225|2.39|2.35|2.39|2.34|130358.50
20231222|2.44|2.39|2.45|2.38|120876.00
20231221|2.42|2.44|2.45|2.38|112654.70
20231220|2.46|2.42|2.47|2.42|92011.03
20231219|2.46|2.45|2.48|2.43|95427.02
20231218|2.50|2.47|2.54|2.46|137959.81
20231215|2.53|2.51|2.55|2.50|104274.00
20231214|2.50|2.52|2.54|2.50|135652.00
20231213|2.51|2.50|2.55|2.49|138082.00
20231212|2.48|2.51|2.51|2.46|144266.50
这个数据, 有6列, 然后需要设定每列数据类型: "integer", "numeric", "numeric", "numeric", "numeric", "numeric", 然后按照第1列日期数据进行排序
#加载股票数据文件
stock_demo <- read.table("002431-棕榈股份.txt", sep = "|", colClasses = c("integer", "numeric", "numeric", "numeric", "numeric", "numeric"))
# 为数据列起标题
names(stock_demo)[1:6] <- c("Date", "O", "C", "H", "L", "VOL")
# 按照日期进行排序
stock_Data_Test <- stock_demo[order(stock_demo$Date),] # 升序
stock_Data_Test <- stock_demo[order(-stock_demo$Date),] # 降序
[结尾]
上面的代码操作细节, 是非常重要的, 如果数据加载出现丢失或者偏差, 会导致后期大数据分析或者建模的准确性降低.