1

我使用代码

 x<-read.csv(filename,sep="\t",head=TRUE)   
 x<-x[,-3] 

得到这样的数据:

14:59:46  16.10         96     154560 买盘  
14:59:41  16.10          1       1610 买盘  
14:59:36  16.09          2       3218 买盘  
14:59:21  16.09          3       4827 买盘  
14:59:21  16.10         15      24150 买盘    
14:59:16  16.03         32      51296 卖盘  

我怎样才能像这样转换这个数据框:

14:59:46  16.10         96     154560 1  
14:59:41  16.10          1       1610 1  
14:59:36  16.09          2       3218 1  
14:59:21  16.09          3       4827 1  
14:59:21  16.10         15      24150 1  
14:59:16  16.03         32      51296 -1  

即:字符串“买盘”代替1,字符串“卖盘”代替-1

4

1 回答 1

0

如果第 5 列中只有两个不同的字符串,则x可以使用

x[[5]] <- (-1) ^ (x[[5]] == "卖盘")

结果:

#         V1    V2 V3     V4 V5
# 1 14:59:46 16.10 96 154560  1
# 2 14:59:41 16.10  1   1610  1
# 3 14:59:36 16.09  2   3218  1
# 4 14:59:21 16.09  3   4827  1
# 5 14:59:21 16.10 15  24150  1
# 6 14:59:16 16.03 32  51296 -1

这个怎么运作?

该命令x[[5]] == "卖盘"创建一个逻辑向量(即,FALSETRUE)。如果逻辑向量与数学函数(此处为:)一起使用^,它们将被转换为0s 和1s 的数字向量。-1 ^ 0 = 1 和 -1 ^ 1 = -1。

于 2013-11-11T08:58:07.490 回答