【问题标题】:How to select the first value of a column of a data frame according to the group using dplyr?如何使用dplyr根据组选择数据框一列的第一个值?
【发布时间】:2021-07-16 17:20:54
【问题描述】:

我使用left_join() 函数加入了 2 帧数据。然后,我使用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 Group V2 first The first column I want
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

【问题讨论】:

    标签: r dataframe dplyr pipe


    【解决方案1】:

    删除.$,它将作为.$ 获取整个列破坏组属性,因此first 将成为整个列的第一行值

    library(dplyr)
    df1 %>%
      left_join(df2) %>%
      group_by(Group) %>%
      mutate(first = first(V2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多