2013-11-11 4 views
0

я использовать кодR преобразования CSV файл в кадр данных

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

ответ

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]] == "卖盘" создает логический вектор (то есть, FALSE и TRUE). Если логические векторы используются с математическими функциями (здесь: ^), их отливают в числовые векторы 0 s и 1 s. -1^0 = 1 и -1^1 = -1.

Смежные вопросы