簡體   English   中英

R data.table當前和所有先前行的最大值

[英]R data.table max of current and all previous rows

我有一個名為“ sampleDT”的data.table,具有列c1和c2

require(data.table)
sampleDT <- data.table(c1 = c(1,2,3), c2 = c(7,5,6), result = c(NA, 7, 7))
print(sampleDT)
> print(sampleDT)enter code here
   c1 c2 result
1:  1  7     NA
2:  2  5      7
3:  3  6      7

我想創建一個新的列“結果”; 值應取上一行的最大值:

  • 列“結果”的第一行將不可避免地為NA;
  • 第二行將給出7;
  • 第三行也會給出7,因為sampleDT[2,result] == 7

我們顯然可以使用for循環來實現它; 我想知道是否有更快的解決方案? (注意:不確定shift是否可以工作,因為結果取決於上一行。

您可以利用data.table的鏈接:

# load package
require(data.table)

# create dummy data
sampleDT <- data.table(c1 = c(1,2,3), c2 = c(7,5,6))

# run code
sampleDT[, result := shift(apply(.SD, 1, max)), 
           .SDcols = 1:2][, result := shift(apply(.SD, 1, max, na.rm = TRUE)), 
                            .SDcols = 1:3][]

>
   c1 c2 result
1:  1  7     NA
2:  2  5      7
3:  3  6      7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM