从 R 中的数据框或时间序列对象中删除 NA 值
Removing NA values from a data frame or time-series object in R
我通过以下方式读取了一些数据:
it.data <- read.csv("inputData/rstar.data.it.csv", header = T, sep = ",")
那么第二列和第四列分别是 inflation。兴趣:
inflation.it <- it.data[2]
和
interest.it <- it.data[4]
。
但是,当我尝试将数据重组为时间序列对象时,问题就来了,因为列中有前导和尾随 NA 值。我试过 na.omit()
、it.data[complete.cases(it.data),]
、na.contiguous
,但没有成功。现在发生的情况是,当我尝试将数据转换为 TS 对象时,
inflation.ts.it <- ts(inflation.it, frequency = 4, interest.start)
我得到与原始数据不匹配的非常奇怪的值。
谢谢。
PS。数据(我没有post一切,只是想了解一下):
gdp.log inflation inflation.expectations interest
1 . 2.4361259655 . .
2 . 2.9997029997 . .
3 . 1.5169194865 . .
4 . 1.5059368664 2.11467132957868 .
5 . 2.0591647331 2.02043102148892 .
6 . 1.9896193771 1.76791011585382 .
7 . 2.6436781609 2.04959978443843 .
8 . 3.3951497860 2.52190301432020 .
9 . 4.5467462347 3.14379838970698 .
10 . 5.0890585241 3.91865817645959 .
11 . 5.7110862262 4.68551019278066 .
12 . 7.7262693156 5.76829007519398 .
13 . 7.5292198967 6.51390849069030 .
14 . 6.9679849340 6.98364009316870 .
15 . 7.6006355932 7.45602743492283 .
16 . 5.6352459016 6.93327158141434 .
17 . 5.4853387259 6.42230128873304 .
18 . 6.6649899396 6.34655254012084 .
19 . 5.8577405857 5.91082878825926 .
20 . 5.5528612997 5.89023263777669 .
21 . 4.9125329499 5.74703119375926 .
22 . 4.2442820089 5.14185421108985 .
假设这些点在原始 CSV 中,您可以通过在读入时将 "."
指定为 na.string
来修复它。
read.csv(text=
"gdp.log,inflation,inflation.expectations,interest
.,2.4361259655377,.,.
.,2.99970299970301,.,.
.,1.5169194865811,.,.
.,1.50593686649291,2.11467132957868,.
.,2.05916473317866,2.02043102148892,.
.,1.9896193771626,1.76791011585382,.
.,2.64367816091953,2.04959978443843,.",
header=TRUE, na.string=c(".", "NA"))
na.string
可以是字符串的向量,以防多个代码用于缺失值。
我通过以下方式读取了一些数据:
it.data <- read.csv("inputData/rstar.data.it.csv", header = T, sep = ",")
那么第二列和第四列分别是 inflation。兴趣:
inflation.it <- it.data[2]
和
interest.it <- it.data[4]
。
但是,当我尝试将数据重组为时间序列对象时,问题就来了,因为列中有前导和尾随 NA 值。我试过 na.omit()
、it.data[complete.cases(it.data),]
、na.contiguous
,但没有成功。现在发生的情况是,当我尝试将数据转换为 TS 对象时,
inflation.ts.it <- ts(inflation.it, frequency = 4, interest.start)
我得到与原始数据不匹配的非常奇怪的值。
谢谢。
PS。数据(我没有post一切,只是想了解一下):
gdp.log inflation inflation.expectations interest
1 . 2.4361259655 . .
2 . 2.9997029997 . .
3 . 1.5169194865 . .
4 . 1.5059368664 2.11467132957868 .
5 . 2.0591647331 2.02043102148892 .
6 . 1.9896193771 1.76791011585382 .
7 . 2.6436781609 2.04959978443843 .
8 . 3.3951497860 2.52190301432020 .
9 . 4.5467462347 3.14379838970698 .
10 . 5.0890585241 3.91865817645959 .
11 . 5.7110862262 4.68551019278066 .
12 . 7.7262693156 5.76829007519398 .
13 . 7.5292198967 6.51390849069030 .
14 . 6.9679849340 6.98364009316870 .
15 . 7.6006355932 7.45602743492283 .
16 . 5.6352459016 6.93327158141434 .
17 . 5.4853387259 6.42230128873304 .
18 . 6.6649899396 6.34655254012084 .
19 . 5.8577405857 5.91082878825926 .
20 . 5.5528612997 5.89023263777669 .
21 . 4.9125329499 5.74703119375926 .
22 . 4.2442820089 5.14185421108985 .
假设这些点在原始 CSV 中,您可以通过在读入时将 "."
指定为 na.string
来修复它。
read.csv(text=
"gdp.log,inflation,inflation.expectations,interest
.,2.4361259655377,.,.
.,2.99970299970301,.,.
.,1.5169194865811,.,.
.,1.50593686649291,2.11467132957868,.
.,2.05916473317866,2.02043102148892,.
.,1.9896193771626,1.76791011585382,.
.,2.64367816091953,2.04959978443843,.",
header=TRUE, na.string=c(".", "NA"))
na.string
可以是字符串的向量,以防多个代码用于缺失值。