2017-09-21 45 views
1

我需要爲數據集中的每一行添加指紋,以便使用同一組的更高版本檢查差異。在每行中使用dplyr和摘要添加散列值

我知道如何R中添加哈希每一行象下面這樣:

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

我學習使用dplyr隨着數據集變得越來越大,我需要將它們存儲在SQL Server中,我試過的東西像下面但散列不工作,所有行給出相同的散列:

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

任何線索使用dplyr的行明智哈希?謝謝!

回答

0

我們可以使用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 

注意,在apply過程中,所有列被轉換爲單一類作爲apply轉換爲matrix和矩陣只能容納一個類。將出現關於將factor轉換爲character類的警告