Articles of data.table

Como calcular eficientemente a distância entre pares de coordenadas usando data.table: =

Eu quero encontrar o método mais eficiente (mais rápido) para calcular as distâncias entre pares de coordenadas lat longas. Uma solução não tão eficiente foi apresentada (aqui) usando sapply e spDistsN1{sp} . Acredito que isso poderia ser feito muito mais rápido se alguém usasse spDistsN1{sp} dentro de data.table Com o operador := , mas não […]

Por que é necessário o allow.cartesian quando você entra em data.tables com chaves duplicadas?

Eu estou tentando entender a lógica da pesquisa J () quando há chaves duplicadas em um data.table em R. Aqui está uma pequena experiência que tentei: library(data.table) options(stringsAsFactors = FALSE) x <- data.table(keyVar = c("a", "b", "c", "c"), value = c( 1, 2, 3, 4)) setkey(x, keyVar) y1 <- data.frame(name = c("d", "c", "a")) x[J(y1$name), […]

Junção esquerda usando data.table

Suponha que eu tenha dois dados : UMA: AB 1: 1 12 2: 2 13 3: 3 14 4: 4 15 B: AB 1: 2 13 2: 3 14 e eu tenho o seguinte código: merge_test = merge(dataA, dataB, by=”A”, all.data=TRUE) Eu recebo: A Bx By 1: 2 13 13 2: 3 14 14 No […]

data.table join, em seguida, adicione colunas ao data.frame existente sem re-copy

Eu tenho dois data.tables , X (3m linhas por ~ 500 colunas) e Y (100 linhas por duas colunas). set.seed(1) X <- data.table( a=letters, b=letters, c=letters, g=sample(c(1:5,7),length(letters),replace=TRUE), key="g" ) Y <- data.table( z=runif(6), g=1:6, key="g" ) Eu quero fazer uma junit externa esquerda no X, o que eu posso fazer por Y[X] graças a: Por […]

Maneira mais rápida de ler arquivos de largura fixa

Eu trabalho com um monte de arquivos de largura fixa (ou seja, nenhum caractere de separação) que eu preciso ler em R. Assim, geralmente há uma definição da largura da coluna para analisar a seqüência de caracteres em variables. Eu posso usar read.fwf para ler os dados sem nenhum problema. No entanto, para arquivos grandes, […]

R resumindo várias colunas com data.table

Eu estou tentando usar dados.table para acelerar o processamento de um grande data.frame (300k x 60) feito de vários data.frames mesclados menores. Eu sou novo em data.table. O código até agora é o seguinte library(data.table) a = data.table(index=1:5,a=rnorm(5,10),b=rnorm(5,10),z=rnorm(5,10)) b = data.table(index=6:10,a=rnorm(5,10),b=rnorm(5,10),c=rnorm(5,10),d=rnorm(5,10)) dt = merge(a,b,by=intersect(names(a),names(b)),all=T) dt$category = sample(letters[1:3],10,replace=T) e me perguntei se havia uma maneira mais […]

data.table “key indices” ou “group counter”

Depois de criar uma chave em um data.table: set.seed(12345) DT <- data.table(x = sample(LETTERS[1:3], 10, replace = TRUE), y = sample(LETTERS[1:3], 10, replace = TRUE)) setkey(DT, x, y) DT # xy # [1,] AB # [2,] AB # [3,] BB # [4,] BB # [5,] CA # [6,] CA # [7,] CA # [8,] CA […]

Erro: falha no pacote ou no espaço de nomes para ggplot2 e para data.table

Não consigo abrir os pacotes ggplot2 e data.table. Isso me dá o seguinte erro (exemplo para ggplot2) > library(ggplot2) Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : there is no package called 'Rcpp' Error: package or namespace load failed for 'ggplot2' Consegui trabalhar bem com esses 2 pacotes antes de fechar minha […]

Selecione o subconjunto de colunas em data.table R

Eu tenho uma tabela de dados com um monte de colunas, por exemplo: dt<-data.table(matrix(runif(10*10),10,10)) Eu quero executar alguma operação na tabela de dados, como a produção de uma matriz de correlação ( cor(dt) ). Para fazer isso, desejo remover algumas colunas que contêm valores não numéricos ou valores fora de um determinado intervalo. Digamos que […]

Como replace os valores de NA em uma tabela * para colunas selecionadas *? data.frame, data.table

Há muitos posts sobre como replace os valores de NA. Estou ciente de que alguém poderia replace NAs na seguinte tabela / frame com o seguinte: x[is.na(x)]<-0 Mas, e se eu quiser restringi-lo apenas a certas colunas? Deixe-me mostrar um exemplo. Primeiro, vamos começar com um dataset. set.seed(1234) x <- data.frame(a=sample(c(1,2,NA), 10, replace=T), b=sample(c(1,2,NA), 10, […]