2015-06-01 83 views
0

Learning R後基於變量組應用一個函數列:使用dplyr將函數應用於分組變量?

的數據是這樣的:

NAME, variable, value 
1 , GROUP1, 10 
2 , GROUP1, 20 
3 , GROUP2, 20 
4 , GROUP2, 30 

我可以使用此功能通過變量來重新調整:

nba.m <- ddply(nba.m, .(variable), transform, rescale = rescale(value)) 

我將如何使用dplyr軟件包執行相同的計算?我試過了:

nba.m <- nba.m %>%group_by(variable) %>% mutate(rescale=rescale(as.numeric(value))) 

但是,這會縮放整個「值」列而不會按變量分組。謝謝, 馬特

+1

嘗試'dplyr ::發生變異(重新調整=' – akrun

+1

哪裏'重新調整()'來自?它似乎工作正常與規模:'nba.m%>%group_by(變量)%>%mutate(rescale = scale(as.numeric(value)))'你會得到什麼輸出?你是否加載了'dplyr'和'plyr'?你是否先加載'plyr'? – MrFlick

+0

@MrFlick在加載'ggplot2'後,一些hadleyverse「scales」包被加載了,它具有'rescale'函數;我想就是這樣。必須是,因爲'ggplot2'在t中OP的帖子鏈接到 – Frank

回答

0

這可能是由plyr掩蓋dplyr中的對象造成的。這就是您撥打library(plyr)後應始終致電library(dplyr)的原因。如果不這樣做應該引起這樣的警告:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
You have loaded plyr after dplyr - this is likely to cause problems. 
If you need functions from both plyr and dplyr, please load plyr first, then dplyr: 
library(plyr); library(dplyr) 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

Attaching package: ‘plyr’ 

The following objects are masked from ‘package:dplyr’: 

    arrange, count, desc, failwith, id, mutate, rename, summarise, summarize 

所以,你可以在使用這些其他功能過於類似的問題。通過在dplyr之前附加plyr來解決這個問題,或者像@akrun指出的那樣:明確地指出你想要的包中的函數,在這種情況下,前綴爲dplyr::

注意,您可以用search()檢查連接包的順序(在這種情況下,我附dplyr plyr):

search() 
[1] ".GlobalEnv"  "package:dplyr"  "package:plyr"  "tools:rstudio"  "package:stats"  "package:graphics" "package:grDevices" "package:utils"  
[9] "package:datasets" "package:methods" "Autoloads"   "package:base"  
+0

謝謝!我需要更多地研究它。我沒有plyr加載,但... –

相關問題