我想对不同主题和不同用户的数据框进行分组,以生成该主题中每个用户的相对重要性表,例如我的数据框
Topic User
A U1
A U2
B U2
A U1
B U1
A U1
我想将它缩减为
Topic User Importance
A U1 0.75
A U2 0.25
B U1 0.5
B U2 0.5
任何人都可以指出我如何使用R,最好是dplyr?
答案 0 :(得分:5)
这是一种快速data.table
替代方法
library(data.table)
setDT(df)[, as.data.table(table(User)/.N), by = Topic]
# Topic User N
# 1: A U1 0.75
# 2: A U2 0.25
# 3: B U1 0.50
# 4: B U2 0.50
这基本上只是按组运行table(User)
并按组大小.N
或者与dplyr
df %>%
group_by(Topic) %>%
do(data.frame(table(.$User)/length(.$User)))
# Source: local data frame [4 x 3]
# Groups: Topic [2]
#
# Topic Var1 Freq
# (fctr) (fctr) (dbl)
# 1 A U1 0.75
# 2 A U2 0.25
# 3 B U1 0.50
# 4 B U2 0.50
答案 1 :(得分:3)
处理此问题的一种方法是分别按主题/主题用户计算并加入结果:
!false == true
答案 2 :(得分:3)
另一种方式:
as.data.frame(prop.table(table(DF), margin = 1))
# Topic User Freq
#1 A U1 0.75
#2 B U1 0.50
#3 A U2 0.25
#4 B U2 0.50