如何使用dplyr根据组select数据框列的第一个值?
How to select the first value of a column of a data frame according to the group using dplyr?
我有 2 帧数据,是我使用 left_join()
函数加入的。然后,我使用 group_by()
函数按组对数据进行分组。使用mutate()
函数我想创建一个列来根据排序组重复显示列V2的第一个值。
在 MWE 中,第 1 组 V2
的第一个值为 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
删除 .$
它将作为 .$
使整个列打破组属性,因此 first
将成为整个列的第一行值
library(dplyr)
df1 %>%
left_join(df2) %>%
group_by(Group) %>%
mutate(first = first(V2))
我有 2 帧数据,是我使用 left_join()
函数加入的。然后,我使用 group_by()
函数按组对数据进行分组。使用mutate()
函数我想创建一个列来根据排序组重复显示列V2的第一个值。
在 MWE 中,第 1 组 V2
的第一个值为 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 |
删除 .$
它将作为 .$
使整个列打破组属性,因此 first
将成为整个列的第一行值
library(dplyr)
df1 %>%
left_join(df2) %>%
group_by(Group) %>%
mutate(first = first(V2))