R-创建一个新列,该列有另一列的值以及第三列中的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"的列,该列将从列" ask"中的每个数据中获取"大小"列的数据。如果cass中的数据是" na",则列中的相应值也将是" 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

或者,您可以复制大小并更改所有询问的值为na。

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

最新更新