这是包含组的熔化数据框
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%"))
答案 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)
您可以使用 table
和 proportions
:
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"))