2016-11-25 39 views
0

我有格式創建持有另一列的值的新的列加上NA從第三塔

  Time Size Ask Bid Trade 
11-1-2016 9:00:12 100 <NA> 901  <NA> 
11-1-2016 9:00:21 5 <NA> <NA> 950 
11-1-2016 9:00:21 5 <NA> 950  <NA> 
11-1-2016 9:00:21 10 905  <NA> <NA> 
11-1-2016 9:00:24 500 <NA> 921  <NA> 
11-1-2016 9:00:28 2 <NA> 879  <NA> 
11-1-2016 9:00:31 6 1040 <NA> <NA> 
11-1-2016 9:00:39 5 <NA> <NA> 950 
11-1-2016 9:00:39 5 <NA> 950  <NA> 
11-1-2016 9:00:39 10 905  <NA> <NA> 

而數據的結構的一個時間序列數據值是

'data.frame': 35797 obs. of 5 variables: 
$ Time : POSIXct, format: "2016-11-01 09:00:12" "2016-11-01 09:00:21" .. 
$ Size : chr "100" "5" "5" "10" ... 
$ ASk : chr NA NA NA "905" ... 
$ Bid : chr "901" NA "950" NA ... 
$ Trade: chr NA "950" NA NA ... 

現在我想要有另一個名爲「Ask_Size」的列,它將從Column「Size」中爲列「Ask」中的每個數據獲取數據。如果詢問欄中的數據爲「NA」,那麼「Ask_Size」欄中的相應值也將爲「NA」

回答

0

這裏有兩種方法。首先找到非NA值並將大小列與此向量相乘。如果NA將出現,結果將爲0.將該零改爲NA。

xy <- data.frame(a = 1:3, b = c(NA, 3, 1)) 

xy$c <- xy$a * !is.na(xy$b) 
xy[xy$c == 0, "c"] <- NA 
xy 

    a b c 
1 1 NA NA 
2 2 3 2 
3 3 1 3 

或者,您可以複製Size並更改所有值,其中Ask是NA到NA。

xy$c <- xy$a 
xy[is.na(xy$b), "c"] <- NA 
+0

非常感謝羅馬:)它的工作 – Abhishek

相關問題