从熔体数据框中计算百分比

时间:2021-02-17 14:43:10

标签: r

这是包含组的熔化数据框

data.frame(group = c(1,1,2,2), trend = c("twitter", "twitter", "amazon", "twitter")

如何根据每组的趋势创建新的数据框

data.frame(group = c(1,1,2,2), trend = c("Twitter", "Amazon", "Twitter", "Amazon") value = c("100%", "0%", "50%", "50%"))

2 个答案:

答案 0 :(得分:2)

使用 dplyr 可以实现您的目标。

library(dplyr)

data <- data.frame(group = c(1,1,2,2), trend = c("twitter", "twitter", "amazon", "twitter"))

(data2 <- data %>%
    group_by(group, trend) %>%
    count() %>% 
    group_by(group) %>% 
    mutate(n = n/sum(n)*100))

输出:

# A tibble: 3 x 3
# Groups:   group [2]
  group trend       n
  <dbl> <chr>   <dbl>
1     1 twitter   100
2     2 amazon     50
3     2 twitter    50

答案 1 :(得分:1)

您可以使用 tableproportions

proportions(table(x), 1)
#   trend
#group amazon twitter
#    1    0.0     1.0
#    2    0.5     0.5

或更多所需格式:

as.data.frame(proportions(table(x), 1)*100)
#  group   trend Freq
#1     1  amazon    0
#2     2  amazon   50
#3     1 twitter  100
#4     2 twitter   50

数据:

x <- data.frame(group = c(1,1,2,2), trend = c("twitter", "twitter", "amazon", "twitter"))
相关问题