Articles of data.table

dplyr mutate / replace em um subconjunto de linhas

Eu estou no processo de experimentar um stream de trabalho baseado em dplyr (ao invés de usar principalmente dados.table, que eu estou acostumado), e eu me deparei com um problema que eu não consigo encontrar uma solução dplyr equivalente para . Eu geralmente corro para o cenário onde eu preciso atualizar / replace condicionalmente várias […]

Por que o plyr é tão lento?

Eu acho que estou usando plyr incorretamente. Alguém poderia me dizer se é um código plyr “eficiente”? require(plyr) plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) Um pequeno contexto: tenho alguns problemas de agregação grandes e notei que cada um demorava algum tempo. Na tentativa de resolver os problemas, fiquei interessado no desempenho de vários procedimentos […]

Converter classs de coluna em data.table

Eu tenho um problema ao usar o data.table: Como converter classs de coluna? Aqui está um exemplo simples: Com data.frame não tenho problema em convertê-lo, com data.table eu não sei como: df <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10)) #One way: http://stackoverflow.com/questions/2851015/r-convert-data-frame-columns-from-factors-to-characters df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE) #Another way df[, "value"] <- as.numeric(df[, "value"]) library(data.table) […]

Como reordenar colunas data.table (sem copiar)

Gostaria de reordenar colunas em meus data.table x , dado um vetor de caracteres de nomes de colunas, neworder : library(data.table) x <- data.table(a = 1:3, b = 3:1, c = runif(3)) neworder <- c("c", "b", "a") Obviamente eu poderia fazer: x[ , neworder, with = FALSE] # or x[ , ..neworder] # cba # […]

É possível usar os foverlaps de function R data.table para encontrar a interseção de intervalos sobrepostos em duas tabelas?

Eu gostaria de usar foverlaps para encontrar os intervalos de interseção de dois arquivos de leito e recolher quaisquer linhas que contenham intervalos sobrepostos em uma única linha. No exemplo abaixo, tenho duas tabelas com intervalos genômicos. As tabelas são chamadas de arquivos “bed” que possuem coordenadas iniciais baseadas em zero e posições finais baseadas […]

Amostra de linhas aleatórias dentro de cada grupo em um data.table

Como você usaria o data.table para obter com eficiência uma amostra de linhas dentro de cada grupo em um quadro de dados? DT = data.table(a = sample(1:2), b = sample(1:1000,20)) DT ab 1: 2 562 2: 1 183 3: 2 180 4: 1 874 5: 2 533 6: 1 21 7: 2 57 8: 1 […]

Atualizar subdataset.tabela com base na associação

Eu tenho duas tabelas de dados, DT1 e DT2: set.seed(1) DT1<-data.table(id1=rep(1:3,2),id2=sample(letters,6), v1=rnorm(6), key="id2") DT1 ## id1 id2 v1 ## 1: 2 e 0.7383247 ## 2: 1 g 1.5952808 ## 3: 2 j 0.3295078 ## 4: 3 n -0.8204684 ## 5: 3 s 0.5757814 ## 6: 1 u 0.4874291 DT2<-data.table(id2=c("n","u"), v1=0, key="id2") DT2 ## id2 v1 […]

Criando variables ​​dummy em R data.table

Eu estou trabalhando com um dataset extremamente grande em R e tenho operado com frameworks de dados e decidi mudar para dados.tables para ajudar a acelerar com as operações. Estou tendo problemas para entender as operações J, em particular, estou tentando gerar variables ​​fictícias, mas não consigo descobrir como codificar operações condicionais em data.tables []. […]

Por que o as.Date é lento em um vetor de caracteres?

Comecei a usar o pacote data.table em R para melhorar o desempenho do meu código. Estou usando o seguinte código: sp500 <- read.csv('../rawdata/GMTSP.csv') days <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday") # Using data.table to get the things much much faster sp500 <- data.table(sp500, key="Date") sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")] sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)] sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)] sp500 <- sp500[,Month:=(as.POSIXlt(Date)$mon+1)] […]

Usando nomes dynamics de colunas em `data.table`

Eu quero calcular a média de cada uma das várias colunas em um data.table, agrupadas por outra coluna. Minha pergunta é semelhante a duas outras perguntas sobre o SO ( uma e duas ), mas não consegui aplicá-las ao meu problema. Aqui está um exemplo: library(data.table) dtb <- fread(input = "condition,var1,var2,var3 one,100,1000,10000 one,101,1001,10001 one,102,1002,10002 two,103,1003,10003 […]