r - 如何使用dplyr根据组选择数据框一列的第一个值?
问题描述
我使用该left_join()
功能加入了 2 帧数据。group_by()
然后,我使用该函数按组对数据进行分组。使用mutate()
我想创建一列的功能,根据排序组重复显示列 V2 的第一个值。
在 MWE 中,第V2
1 组的第一个值为 5,第 2 组的第一个值为 7.5。但是,我为此编写的代码是从列 V2 中选择第一个值并为两组重复,而不是按我想要的方式分开。
注意:这很简单,因为它似乎复制了列V2
,但是第一个值的选择对于我进行其他计算是必要的。
有小费吗?
library(dplyr)
Group <- c(1, 2)
V1 <- c(10, 20, 30)
V2 <- c(5, 7.5)
df1 <- expand.grid(V1 = V1,
Group = Group)
df2 <- data.frame(Group, V2)
df <- df1 %>%
left_join(df2) %>%
group_by(Group) %>%
mutate(first = first(.$V2))
V1 | 团体 | V2 | 第一的 | 我要的first 专栏 |
---|---|---|---|---|
10 | 1 | 5.0 | 5 | 5.0 |
20 | 1 | 5.0 | 5 | 5.0 |
30 | 1 | 5.0 | 5 | 5.0 |
10 | 2 | 7.5 | 5 | 7.5 |
20 | 2 | 7.5 | 5 | 7.5 |
30 | 2 | 7.5 | 5 | 7.5 |
解决方案
删除.$
它,它将作为.$
整个列破坏 group 属性,因此first
将是整个列的第一行值
library(dplyr)
df1 %>%
left_join(df2) %>%
group_by(Group) %>%
mutate(first = first(V2))