如何用R中的特定值替换NA值?
我有一个时间序列数据帧 但该数据包含如下内容:如何用R中的特定值替换NA值?,r,R,我有一个时间序列数据帧 但该数据包含如下内容: KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adjusted 2017-04-05 627.89 630.17 626.94 630.17 923700 630.17 2017-04-06 630.59 630.59 625.20 630.46 873400 630.46 2017-04
KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adjusted
2017-04-05 627.89 630.17 626.94 630.17 923700 630.17
2017-04-06 630.59 630.59 625.20 630.46 873400 630.46
2017-04-07 632.16 633.49 629.61 633.32 833200 633.32
2017-04-10 633.24 633.24 617.16 619.41 865600 619.41
2017-04-11 620.25 625.18 614.21 621.64 813400 622.64
2017-04-12 622.54 622.73 619.27 621.45 695600 621.45
2017-04-13 622.49 624.15 622.38 623.87 742500 623.87
2017-04-14 NA NA NA NA NA NA
我想将Na值更改为618.24 618.24 618.24 618.24 742500 618.24
我怎样才能改变它
library(quantmod)
today <- Sys.Date()
kq <- getSymbols("^kq11", from = today-100, to = today, auto.assign = F)
kq
库(quantmod)
今天根据下面林格巴克的评论编辑
在这种特殊情况下,我可能会使用
df$KQ11.Volume[is.na(df$KQ11.Volume)] = 742500
df[is.na(df)] = 618.24
但这只适用于这种特殊情况。OP,对于要用作替换的数字,是否有任何特定的逻辑?如果您只想将NAs更改为您的序列:
df <- read.table(text="date KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adj
2017-04-05 627.89 630.17 626.94 630.17 923700 630.17
2017-04-06 630.59 630.59 625.20 630.46 873400 630.46
2017-04-07 632.16 633.49 629.61 633.32 833200 633.32
2017-04-10 633.24 633.24 617.16 619.41 865600 619.41
2017-04-11 620.25 625.18 614.21 621.64 813400 622.64
2017-04-12 622.54 622.73 619.27 621.45 695600 621.45
2017-04-13 622.49 624.15 622.38 623.87 742500 623.87
2017-04-14 NA NA NA NA NA NA",
header=TRUE,stringsAsFactors=FALSE)
df[is.na(df)] <- c(618.24, 618.24, 618.24, 618.24, 742500, 618.24)
date KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adjusted
1 2017-04-05 627.89 630.17 626.94 630.17 923700 630.17
2 2017-04-06 630.59 630.59 625.20 630.46 873400 630.46
3 2017-04-07 632.16 633.49 629.61 633.32 833200 633.32
4 2017-04-10 633.24 633.24 617.16 619.41 865600 619.41
5 2017-04-11 620.25 625.18 614.21 621.64 813400 622.64
6 2017-04-12 622.54 622.73 619.27 621.45 695600 621.45
7 2017-04-13 622.49 624.15 622.38 623.87 742500 623.87
8 2017-04-14 618.24 618.24 618.24 618.24 742500 618.24
df
输出:
# KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adjusted
# 2017-04-05 627.89 630.17 626.94 630.17 923700 630.17
# 2017-04-06 630.59 630.59 625.20 630.46 873400 630.46
# 2017-04-07 632.16 633.49 629.61 633.32 833200 633.32
# 2017-04-10 633.24 633.24 617.16 619.41 865600 619.41
# 2017-04-11 620.25 625.18 614.21 621.64 813400 622.64
# 2017-04-12 622.54 622.73 619.27 621.45 695600 621.45
# 2017-04-13 622.49 624.15 622.38 623.87 742500 623.87
# 2017-04-14 618.24 618.24 618.24 618.24 742500 618.24
可能是复制品我认为不是复制品。这些问题希望根据列的不同而不是整个列的零,用不同的值替换NA
s。这些数字是什么<代码>c(618.24618.24618.24618.24742500 618.24
mean,meadian?可能使用?@zx8754我只获得20170414的收盘价。所以我填写的数据是不可避免的。我决定填写OHLC以收盘价。这只是将所有的NA
转换为零。这不是问题要求的。你是对的,我读得太快了,错过了742在618.24之间为500英尺。感谢您的帮助。我了解了na、locf、na.近似值。很抱歉打扰您,我还有一个问题想知道您的答案。如果数据框包含多个na行(包含na数据),我可以分配特定值来替换它们吗?
df %>% replace_na(list(KQ11.Open = 618.24, KQ11.High = 618.24,
KQ11.Low = 618.24, KQ11.Close = 618.24,
KQ11.Volume = 742500, KQ11.Adjusted = 618.24))
# KQ11.Open KQ11.High KQ11.Low KQ11.Close KQ11.Volume KQ11.Adjusted
# 2017-04-05 627.89 630.17 626.94 630.17 923700 630.17
# 2017-04-06 630.59 630.59 625.20 630.46 873400 630.46
# 2017-04-07 632.16 633.49 629.61 633.32 833200 633.32
# 2017-04-10 633.24 633.24 617.16 619.41 865600 619.41
# 2017-04-11 620.25 625.18 614.21 621.64 813400 622.64
# 2017-04-12 622.54 622.73 619.27 621.45 695600 621.45
# 2017-04-13 622.49 624.15 622.38 623.87 742500 623.87
# 2017-04-14 618.24 618.24 618.24 618.24 742500 618.24