如何使用dplyr在行组之间进行划分? [英] How to divide between groups of rows using dplyr?
本文介绍了如何使用dplyr在行组之间进行划分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个数据框:
x <- data.frame(
name = rep(letters[1:4], each = 2),
condition = rep(c("A", "B"), times = 4),
value = c(2,10,4,20,8,40,20,100)
)
# name condition value
# 1 a A 2
# 2 a B 10
# 3 b A 4
# 4 b B 20
# 5 c A 8
# 6 c B 40
# 7 d A 20
# 8 d B 100
我想按名称分组并用 condition == B $ c $划分行的值c>与那些具有
condition == A
的人一起获得:
I want to group by name and divide the value of rows with condition == "B"
with those with condition == "A"
, to get this:
data.frame(
name = letters[1:4],
value = c(5,5,5,5)
)
# name value
# 1 a 5
# 2 b 5
# 3 c 5
# 4 d 5
我知道类似的东西可以使我更加接近:
I know something like this can get me pretty close:
x$value[which(x$condition == "B")]/x$value[which(x$condition == "A")]
,但是我想知道是否有一种简单的方法可以使用dplyr(我的数据框是一个玩具示例,我通过链接多个 group_by $ c $来做到这一点c>和
摘要
调用)。
but I was wondering if there was an easy way to do this with dplyr (My dataframe is a toy example and I got to it by chaining multiple group_by
and summarise
calls).
推荐答案
尝试:
x %>%
group_by(name) %>%
summarise(value = value[condition == "B"] / value[condition == "A"])
其中给出:
#Source: local data frame [4 x 2]
#
# name value
# (fctr) (dbl)
#1 a 5
#2 b 5
#3 c 5
#4 d 5
这篇关于如何使用dplyr在行组之间进行划分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文