2015-04-21 2 views
0

Теперь я использую таблицу данных package.table, однако я едва могу найти способ вычисления по строкам. , например:как вычислить по строке данных.table

apply(x,1,sum) # suppose x is a data.frame with many columns 

ли кто-нибудь знает, как это сделать?

+2

Добро пожаловать в SO! Чтобы кто-то помог вам, отметьте вопрос языком и инструментами, которые вы используете. – codemonkeh

+2

Кроме того: прочитайте информацию о [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и о том, как создать [минимальный воспроизводимый пример] (http://stackoverflow.com/вопросы/5963269/как к Make-A-пра-р-воспроизводимая-примера/5963610 # 5963610). Это облегчит вам помощь другим людям. – Jaap

ответ

2

сделать все возможное, чтобы избежать за строкой операций, но если вы должны:

dt[, your.by.row.operation, by = 1:nrow(dt)] 
+0

x = data.table (m = 1: 5, n = 1: 5) x [, sum, by = 1: nrow (x)] # ошибка x [, sum (.SD), by = 1: nrow (x)] # ошибка так, как вы это сделали? –

+0

'x [, sum (unlist (.SD)), by = 1: nrow (x)]', хотя для 'sum' в частности, есть намного лучшие способы – eddi

+0

Это прекрасно. Причина, по которой я делаю это, заключается в том, что я думаю, что это будет быстрее для data.table. Есть ли еще более быстрый способ? –

0

Вы можете попробовать с помощью преобразования(). Например, с помощью фиктивного набора данных, который у меня есть:

> head(data) 
    sample  time.min  abs time.sec 
1: pur n 0.0008333334 0.4678054  0.05 
2: pur n 0.2508333325 0.4661632 15.05 
3: pur n 0.5008333325 0.4663149 30.05 
4: pur n 0.7508333325 0.4658490 45.05 
5: pur n 1.0008333920 0.4671631 60.05 
6: pur n 1.2508333920 0.4657932 75.05 

Скажет, я хочу подвести два «время» колонну вместе, и заполнить новый столбец с этим значением. Я мог бы использовать transform() для этого:

> transform(data, time.sum = time.min + time.sec) 
     sample  time.min  abs time.sec  time.sum 
    1:  pur n 0.0008333334 0.4678054  0.05 0.05083333 
    2:  pur n 0.2508333325 0.4661632 15.05 15.30083328 
    3:  pur n 0.5008333325 0.4663149 30.05 30.55083328 
    4:  pur n 0.7508333325 0.4658490 45.05 45.80083328 
    5:  pur n 1.0008333920 0.4671631 60.05 61.05083691 
+0

Предположим, у меня есть тысяча столбцов, как я могу это сделать? –

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