2016-10-10 72 views
1

我有一個數據幀,看起來像這樣創建率表格從數據框中的多選列

ATTRIBUTE Percentages  Frequency  
*COLB*  *Percentage*  *Amount* 
yes   50%    2 
no   50%    2 
*COLC*  *Percentage  *Amount* 
A   25%    1 
B   25%    1 
C   25%    1 
D   25%    1 
*COLD*  *Percentage*  *Amount* 
AB   50%    2 
AC   50%    2 

它不需要看起來完全像這樣,但我需要它全部在一個數據框中,並只包括提到的選定列。

任何幫助將是偉大的,謝謝!

+0

看看[這裏](http://stackoverflow.com/questions/24576515/relative-frequencies-proportions-with-dplyr)。首先熔解數據可能是必需的。 – Haboryme

回答

2

你可以做到以下幾點:

dat <- data.frame(COLA=paste0("name",1:4), 
        "COLB"=c("yes", "yes", "no", "no")) 

require(purrr) 
col_to_stat <- function(col){ 
    tmp <- table(col) 
    data.frame(ATTRIBUTE = names(tmp), Percentages = c(tmp/length(col)), Frequency = c(tmp), 
      stringsAsFactors = FALSE) 
} 
map_df(dat, col_to_stat, .id="col") 

它給你:

col ATTRIBUTE Percentages Frequency 
1 COLA  name1  0.25   1 
2 COLA  name2  0.25   1 
3 COLA  name3  0.25   1 
4 COLA  name4  0.25   1 
5 COLB  no  0.50   2 
6 COLB  yes  0.50   2 

如果你要打印的百分比,而不是小數看看: How to format a number as percentage in R?

PS:如果您使用tibble而不是data.frame,則可以使用以下更短的代碼:

tibble(ATTRIBUTE = names(tmp), Percentages = tmp/length(col), Frequency = tmp) 
+0

謝謝@ Floo0 –