2014-02-19 3 views
2

Я хочу, чтобы получить первый элемент из data.tableR: Как получить один элемент в data.table

library(data.table) 
dt <- data.table(data.frame(prices=c(1.1,2.4,5.3), 
          dates = c(2011-01-04,2011-01-05,2011-01-03))) 
dt 
    date  value 
1: 2011-01-04 1.1 
2: 2011-01-05 2.4 
3: 2011-01-03 5.3 
> dt[1,1] 
[1] 1 
> dt[1] 
    date  value 
1: 2011-01-04 1.1 
> dt[1][1] 
    date  value 
1: 2011-01-04 1.1 

Мне нужно, чтобы получить первую дату. Я не уверен, что я здесь отсутствует :(

Спасибо большое. Я был немного смущен с выходом.

DT [1, дата]
[1] 2011-01- 04
уровни. 2011-01-03 2011-01-04 2011-01-05 (? любая идея, что означают уровни)

Это также работает дата-й $ [1] Реализация такой же, как кадр данных, .

+0

Объекты data.table' наследуют от data.frames, поэтому вы можете использовать '$', но на больших заданиях он будет намного медленнее. –

+0

@IShouldBuyABoat для получения одного столбца '' 'будет на несколько порядков быстрее, чем' .data.table' из-за больших накладных расходов последней функции – eddi

+0

OP, что бит 'data.frame()' is noteccessary – eddi

ответ

4

Возможно:

dt[1, date] 

Одна из радостей использования data.table является то, что выражения в положении «J» получить оценку в контексте существующих именованных столбцов. Не нужно использовать with().

+0

спасибо, я немного путался с выходом.> Dt [1, date] [1] 2011-01-04 Уровни: 2011-01-03 2011-01-04 2011-01-05 –

+0

О, тогда вы имеют столбцы факторов, но это не было ясно из вывода печати. –

+0

Действительно, его колонка факторов. Я должен прочитать об этом больше. Но я использовал st <- data.frame (prices = c (1.1.2.4.5.3), date = c (2011-01-04,2011-01-05,2011-01-03)) для создания фрейма данных. R автоматически делает это фактором? –

-3

Пробег: dt[1,"date"]

Я предполагаю, что вывод, который вы ищете является 2011-01-04

или dt[1,2]

в кадрах данных в R первый столбец, что выглядят как целые числа являются фактические имена столбцов. Таким образом, если dt был фреймом данных, то dt[1,1] возвращает имя первой строки, которая равна 1. Я думаю, что здесь происходит нечто подобное.

+0

dt [1, "date"], я думаю – Troy

+0

Я не думаю, что кавычки помогут. И user6179 должен понимать, что вопрос не о кадрах данных. –

+0

да, вычисляется второе выражение, здесь оно возвращает «значение даты» –

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