Удалить пробелы в символьных строках - PullRequest
0 голосов
/ 03 октября 2011

У меня есть фрейм данных, импортированный из текстового файла:

                      dateTime contract bidPrice askPrice bidSize askSize
1 Tue Dec 14 05:12:20 PST 2010     CLF1        0        0       0       0
2 Tue Dec 14 05:12:20 PST 2010     CLG1        0        0       0       0
3 Tue Dec 14 05:12:20 PST 2010     CLH1        0        0       0       0
4 Tue Dec 14 05:12:20 PST 2010     CLJ1        0        0       0       0
5 Tue Dec 14 05:12:20 PST 2010     NGF1        0        0       0       0
6 Tue Dec 14 05:12:20 PST 2010     NGG1        0        0       0       0
  lastPrice lastSize volume
1         0        0      0
2         0        0      0
3         0        0      0
4         0        0      0
5         0        0      0
6         0        0      0

Я пытаюсь создать подмножество для всех строк, где contract = CLF1, но получаю следующую ошибку:

> clf1 <- data.frame(subset(train2, as.character(contract="CLF1")))
Error in as.character(contract = "CLF1") : 
  supplied argument name 'contract' does not match 'x'

Я пытаюсь определить, сколько символов в ячейке:

> f <-as.character(train2[1,2])
> nchar(f)
[1] 5

Я предположил, что это связано с пробелом в начале или в конце, поэтому я пытаюсь сделать следующее:

> clf1 <- data.frame(subset(train2, as.character(contract=" CLF1")))
Error in as.character(contract = " CLF1") : 
  supplied argument name 'contract' does not match 'x'
> clf1 <- data.frame(subset(train2, as.character(contract="CLF1 ")))
Error in as.character(contract = "CLF1 ") : 
  supplied argument name 'contract' does not match 'x'

Снова нетудачи, вот и яЛюбые предложения будут великолепны.Спасибо.

РЕДАКТИРОВАТЬ:

> clf1 <- subset(train2, contract == "CLF1")
> head(clf1)
[1] dateTime  contract  bidPrice  askPrice  bidSize   askSize   lastPrice lastSize 
[9] volume   
<0 rows> (or 0-length row.names)

1 Ответ

3 голосов
/ 03 октября 2011

Я считаю, что ваша проблема в том, что вы используете неправильный синтаксис в subset. Попробуйте вместо этого:

subset(train2, contract == "CLF1")

Так что вам не следует приводить выражение подмножества к символу, а также вам нужно использовать оператор равенства ==, а не =. Вы должны прочитать ?subset и посмотреть на разницу между примерами там и вашим кодом.

Хотя ваше поле действительно может содержать начальные пробелы, в этом случае было бы неплохо попробовать:

subset(train2, contract == " CLF1")

или когда вы читаете файл, используя read.table, вы можете использовать аргумент strip.white для удаления пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...