[简介]
常用网名: 猪头三
出生日期: 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应用软件安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
[序言]
在股票数据分析中, 有时需要把"年/月/日"时间转换为"周内第N天" 和 计算收盘价的涨幅 这2个是非常有用的的技巧, 对统计分析很有帮助.
[转换代码1: "年/月/日"时间转换为"周内第N天"]
假如有一个数据框stock_demo包含一个Date列, 内容是整型的时间数字, 比如:
20231229
20231228
20231227
20231225
20231222
20231221
20231220
20231219
20231218
20231215
R
# 针对Date列转换为周内第几天, 并追加新的数据列DW
stock_Date <- as.Date(as.character(stock_demo$Date), format = "%Y%m%d")
stock_Days <- as.integer(format(stock_Date, "%u"))
# 把"周内第几天"的数据重新绑到stock_demo
stock_demo$Days <- as.character(stock_Days)
[转换代码2: 计算收盘价的涨幅]
假如有一个数据框stock_demo包含一个C列, 内容是浮点型的收盘价, 比如:
2.47
2.38
2.34
2.36
2.39
2.44
2.42
2.46
2.46
2.50
2.53
2.50
2.51
2.48
2.43
2.51
R
# 针对收盘价计算涨幅, 并追加新的数据列RC
# 计算涨幅之后, 由于行数不匹配, 因此需要NA进行扩充
c_Rise <- with(stock_demo, round(((C[-length(C)] - C[-1]) / C[-1])*100, 2))
c_Rise <- c(c_Rise, rep(NA, nrow(stock_demo)-length(c_Rise)))
C_Rise_Int <- as.integer(c_Rise)
stock_demo <- cbind(stock_demo, RC = c_Rise)
stock_demo <- cbind(stock_demo, RCI = C_Rise_Int)
# 整理新的数据框(去掉包含由NA的行)
stock_Data <- na.omit(stock_demo)
[结尾]
这2个代码技巧, 都是高频率的, 希望对大家都有帮助.