簡體   English   中英

如何使用R中的其他變量計算1個變量的百分比

[英]How to calculate the percentages of 1 variable using other variable in R

我有一個如下的數據集,我想按狀態計算頻率的百分比。

數據

#    State     Ideology Freq
#1    CO Conservative   33
#2    CO  Independent   17
#3    CO      Liberal   50
#4    DC Conservative   33
#5    DC  Independent   33
#6    DC      Liberal   33

預期產量:

 #    State     Ideology Freq percentage
 #1    CO Conservative   33   33%
 #2    CO  Independent   17   17%
 #3    CO      Liberal   50   50%
 #4    DC Conservative   33   33.33%
 #5    DC  Independent   33   33.33%
 #6    DC      Liberal   33   33.33%

嘗試過:

data$percentage = data$Freq/sum(data$Freq)  
percent <- function(x, digits = 2, format = "f", ...) {  
 paste0(formatC(100 * x, format = format, digits = digits, ...), "%")  
}  
data$percentage = percent(data$percentage)

我能夠通過總體水平來計算百分比,但是我想通過freqvalue / sum(狀態的freq值)來計算百分比。

您可以使用dplyr軟件包:

library(dplyr)
data <- group_by(data, State) %>%
        mutate(percentage = paste0(round(Freq/sum(Freq) * 100, 2), "%"))
data
## Source: local data frame [6 x 4]
## Groups: State [2]
## 
##    State     Ideology  Freq percentage
##   (fctr)       (fctr) (int)      (chr)
## 1     CO Conservative    33        33%
## 2     CO  Independent    17        17%
## 3     CO      Liberal    50        50%
## 4     DC Conservative    33     33.33%
## 5     DC  Independent    33     33.33%
## 6     DC      Liberal    33     33.33%

第一行按State對數據進行分組。 對於每個組,將評估以下mutate()中的所有操作。 因此, sum(Freq)對每個狀態的Freq值求和。

library(dplyr)
groups <- group_by(data, State)
summary <- summarize( SUM.OF.STATE = sum(State ,na.rm = TRUE))
DF.YOU.WANT <- merge(data, summary, by.x = "State", by.y = "State")
# and now just divide columnt with freq by columnn from summary df with sum of freq.data is your data frame.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM