Articles of data.table

eval y cita en data.table

¿Que me estoy perdiendo aqui? d = data.table(a = 1:5) d[, a] # 1 2 3 4 5 d[, sum(a)] # 15 d[, eval(quote(a))] # 1 2 3 4 5 d[, sum(eval(quote(a)))] # 15 quoted_a = quote(a) d[, eval(quoted_a)] # 1 2 3 4 5 d[, sum(eval(quoted_a))] # Error in eval(expr, envir, enclos) : object […]

Agregue una fila por referencia al final de un objeto data.table

En esta pregunta, el creador del paquete data.table explica por qué las filas no se pueden insertar (o eliminar) por referencia en el medio de una data.table todavía. También señala que tales operaciones podrían ser posibles al final de la mesa. ¿Podría mostrar un código para perfome esta acción? Sería la versión “por referencia” de […]

¿Por qué es plyr tan lento?

Creo que estoy usando plyr incorrectamente. ¿Podría alguien decirme si se trata de un código plyr ‘eficiente’? require(plyr) plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) Un pequeño contexto: tengo algunos grandes problemas de agregación y he notado que cada uno tomaba algo de tiempo. Al tratar de resolver los problemas, me interesé en la realización […]

dplyr mutate / replace en un subconjunto de filas

Estoy en el proceso de probar un flujo de trabajo basado en dplyr (en lugar de usar principalmente data.table, que estoy acostumbrado), y me he encontrado con un problema que no puedo encontrar una solución dplyr equivalente a . Normalmente me encuentro con el escenario en el que necesito actualizar / reemplazar condicionalmente varias columnas […]

Cómo reordenar columnas data.table (sin copiar)

Me gustaría reordenar columnas en mi data.table x , dado un vector de caracteres de nombres de columna, neworder : library(data.table) x <- data.table(a = 1:3, b = 3:1, c = runif(3)) neworder <- c("c", "b", "a") Obviamente yo podría hacer: x[ , neworder, with = FALSE] # or x[ , ..neworder] # cba # […]

Convertir clases de columna en data.table

Tengo un problema al utilizar data.table: ¿cómo convierto las clases de columna? Aquí hay un ejemplo simple: con data.frame no tengo problemas para convertirlo, con data.table simplemente no sé cómo: 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) dt […]

¿Es posible usar la función R data.table foverlaps para encontrar la intersección de los rangos superpuestos en dos tablas?

Me gustaría utilizar foverlaps para encontrar los rangos de intersección de dos archivos de cama, y ​​contraer las filas que contienen rangos superpuestos en una sola fila. En el siguiente ejemplo, tengo dos tablas con rangos genómicos. Las tablas se denominan archivos de “cama” que tienen coordenadas de inicio basadas en cero y posiciones finales […]

Actualizar subconjunto de data.table basado en join

Tengo dos tablas de datos, DT1 y 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 ## […]

Completa los valores faltantes por grupo en data.table

Si uno desea completar los valores perdidos de una variable en función de la observación anterior / posterior que no sea NA dentro de un grupo, el comando data.table es setkey(DT,id,date) DT[, value_filled_in := DT[!is.na(value), list(id, date, value)][DT[, list(id, date)], value, roll = TRUE]] que es bastante complejo. Es una pena, ya que el roll […]

Muestra filas aleatorias dentro de cada grupo en un data.table

¿Cómo usará data.table para tomar eficientemente una muestra de filas dentro de cada grupo en un dataframe? 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 20 9: 2 39 10: […]