[英]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.