RStudio中如何自动计算比特币平均价格较前一日的百分比变化
R计算全量比特币日涨跌幅的实现方法
方法1:基础R原生实现(无需安装额外包)
直接使用矢量化运算替代逐行循环,运算效率远高于手动遍历索引,适配你的2014行数据秒级出结果:
# 第一行无前置日数据,默认填充NA,后续计算逻辑和你手动写的单条规则完全一致 bitcoin$PercentageCh <- c(NA, round(diff(bitcoin$AverageP) / head(bitcoin$AverageP, -1) * 100, 3))
逻辑说明:
diff(bitcoin$AverageP)会自动计算每一行价格减去前一行价格,返回长度为2013的数值向量head(bitcoin$AverageP, -1)取所有行的价格排除最后一行,正好对应每一行的前一日价格,长度和diff结果匹配- 开头补
NA对应第一行无前置数据的情况,最终生成的列长度和原表2014行完全匹配
方法2:tidyverse/dplyr语法实现(适合习惯tidy系列工具的用户)
用lag()函数直接取前一行的值,逻辑更直观:
library(dplyr) bitcoin <- bitcoin %>% mutate(PercentageCh = round((AverageP - lag(AverageP)) / lag(AverageP) * 100, 3))
注意事项
- 若你的
AverageP列存在缺失值,对应行的计算结果会自动返回NA,可提前对价格列做缺失值处理再执行计算 - 不需要第一行的NA的话,后续可通过
na.omit(bitcoin)直接过滤
内容的提问来源于stack exchange,提问作者a_mukhamedshin
相关产品推荐
相关产品推荐

