2017-09-21 2 views
1

Ich muss einen Fingerabdruck zu jeder Zeile in einem Dataset hinzufügen, um mit einer späteren Version des gleichen Satzes zu überprüfen, um Unterschiede zu suchen.Hinzufügen von Hash zu jeder Zeile mit dplyr und Digest in R

Ich weiß, wie Hash in R für jede Zeile hinzufügen wie folgt:

data.frame(iris,hash=apply(iris,1,digest)) 

Ich lerne dplyr zu verwenden, da die Datenmenge ist riesig bekommen und ich brauche sie in SQL Server zu speichern, habe ich versucht, etwas unten wie aber der Hash nicht funktioniert, werden alle Zeilen geben den gleichen Hash:

iris %>% 
    rowwise() %>% 
    mutate(hash=digest(.)) 

Jeder Hinweis für reihenweise Hashing mit dplyr? Vielen Dank!

Antwort

0

Wir konnten do

res <- iris %>% 
     rowwise() %>% 
     do(data.frame(., hash = digest(.))) 
head(res, 3) 
# A tibble: 3 x 6 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species        hash 
#   <dbl>  <dbl>  <dbl>  <dbl> <fctr>       <chr> 
#1   5.1   3.5   1.4   0.2 setosa e261621c90a9887a85d70aa460127c78 
#2   4.9   3.0   1.4   0.2 setosa 7bf67322858048d82e19adb6399ef7a4 
#3   4.7   3.2   1.3   0.2 setosa c20f3ee03573aed5929940a29e07a8bb 

Hinweis verwenden, die in der apply Verfahren, werden alle Spalten auf eine einzige Klasse, die als apply umgewandelt werden konvertiert in matrix und Matrix nur eine einzige Klasse halten kann. Es wird eine Warnung über die Umwandlung der factor in character Klasse

sein
Verwandte Themen