簡體   English   中英

創建一個新列,其中包含另一列的值以及第三列的NA值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM