使用R中的xts中的循环创建新列

时间:2014-11-17 01:22:04

标签: r loops apply xts

我是R的新手,面临着一些问题。

我有xts数据,我想根据这些值创建一个新列。 例如:

>head(x1)
>                      Values
>"2014-09-01 00:00:01" -0.1
>"2014-09-01 00:00:02" 0.05
>"2014-09-01 00:00:03" 0.01
>"2014-09-01 00:00:04" -0.03
>"2014-09-01 00:00:05" 0.01
>"2014-09-01 00:00:06" -0.001

我想添加一个新列:

>                     Values  Signs
>"2014-09-01 00:00:01"  -0.1 Negetive
>"2014-09-01 00:00:02" 0.05  Positive
>"2014-09-01 00:00:03" 0.01  Positive
>"2014-09-01 00:00:04" -0.03 Negative
>"2014-09-01 00:00:05" 0.01  Positive
>"2014-09-01 00:00:06"-0.001 Negative

我一直在尝试某些方式,比如

>x2 <- apply(x1, MARGIN = 1, 
+if(x1 > 0){
+           paste("Positive")
+          }else{
+                if(x1<0){
+                         paste("Negative")
+                        }
+               }
+           )

它完全不起作用。 我知道这是一个非常基本的问题但对我来说很难。 谢谢你的帮助。

当我输入dput(head(sep4diff1))(sep4diff1是我的数据对象的真实姓名)时,我得到了:

x1 <- structure(c(NA, -0.00200000000000955, -0.000999999999990564, 
0, 0, 0, NA, 0.000999999999990564, -0.00199999999999534, 0, 0, 
0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct", "POSIXt"
), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", index
=structure(c(1409756400.675, 
1409756401.938, 1409756402.414, 1409756403.173, 1409756404.173, 
1409756405.173), tzone = "", tclass = c("POSIXct", "POSIXt")), .Dim = c(6L, 
2L), .Dimnames = list(NULL, c("Bid", "Ask")))

在前面的示例中,只有一列,但实际上我有两列。 价值可能为零,所以我必须创建一个列为&#34;正&#34;,&#34;否定&#34;或&#34;零&#34;。 提前谢谢。

0 个答案:

没有答案