[英]create a new column which holds values of another column plus NA values from a third column
我有一個格式的時間序列數據
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”的列,它將為“ Ask”列中的每個數據從“ Size”列中獲取數據。 如果Ask列中的數據為“ NA”,則列“ Ask_Size”中的對應值也將為“ NA”
這有兩種方法。 首先找到非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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.