快速提问,如何使用dplyr?
例如,给定数据:
D = data.frame(cat=rep(LETTERS[1:2], each=2), val=1:4)
# cat val
# 1 A 1
# 2 A 2
# 3 B 3
# 4 B 4
Run Code Online (Sandbox Code Playgroud)
期望的结果应该是:
# cat weight
# 1 A 0.3 # (1+2)/10
# 2 B 0.7 # (3+4)/10
Run Code Online (Sandbox Code Playgroud)
还有什么比以下更简洁?
D %>%
mutate(total=sum(val)) %>%
group_by(cat) %>%
summarise(weight=sum(val/total))
Run Code Online (Sandbox Code Playgroud)
我把它写成
D <- data.frame(
cat = rep(LETTERS[1:2], each = 2),
val = 1:4
)
D %>%
group_by(cat) %>%
summarise(val = sum(val)) %>%
mutate(weight = val / sum(val))
Run Code Online (Sandbox Code Playgroud)
你可以简化一点count()(只在dplyr> = 0.3)和prop.table():
D %>%
count(cat, wt = val) %>%
mutate(weight = prop.table(n))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |