将多个变量分组 - R.

Don*_*yck 0 r dplyr

我想将不同主题和不同用户的数据框分组,以生成该主题中每个用户的相对重要性表,例如我的数据框是

Topic User
A     U1
A     U2
B     U2
A     U1
B     U1
A     U1
Run Code Online (Sandbox Code Playgroud)

我想减少它

Topic  User Importance
 A     U1    0.75
 A     U2    0.25
 B     U1    0.5
 B     U2    0.5
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我如何使用R优选dplyr?

Dav*_*urg 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
Run Code Online (Sandbox Code Playgroud)

这基本上只是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
Run Code Online (Sandbox Code Playgroud)