【问题标题】:How can I add columns with the first and last occurence of a variable in an R dataframe? [duplicate]如何在 R 数据框中添加第一次和最后一次出现变量的列? [复制]
【发布时间】:2021-10-16 21:42:34
【问题描述】:

我有一个大数据框,格式如评论底部所示,但没有最后 2 列。

它按名称(chr)和日期(POSIXct)排序。我想添加一个 4. 和 5. 列,其中列出了每个名称的第一次和最后一次出现,如下所示:

ID Name Date First Last
3 A 2010-10-01 2010-10-01 2010-12-31
4 A 2010-12-03 2010-10-01 2010-12-31
1 A 2010-12-31 2010-10-01 2010-12-31
2 B 2012-01-01 2012-01-01 2012-01-01

我该怎么做? Name 和 Date 列中都有 NA 和 NULL。

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以将'Date'转换为Date类,按'Name'分组,得到'Date'的minmax(如果它还没有排序或者代替min/max使用first/last)

    library(dplyr)
    df1 %>%
         mutate(Date = as.Date(Date)) %>%
         group_by(Name) %>%
         mutate(First = min(Date), Last = max(Date)) %>%
         ungroup
    

    【讨论】:

    • 使用此方法,First 和 Last 列的值来自整个数据集的第一行和最后一行,而不是组的值。我尝试按另一列(“类型”,上面的示例中未显示)对数据集进行排序,之后,我尝试再次运行您的代码。似乎 group_by 函数不会对数据进行排序,即使我省略了“取消分组”行。我还尝试考虑名称列,但仍然没有成功。
    • 对于任何有同样问题的人:我在 dplyr 之前加载了 plyr,它掩盖了 mutate 函数。相关问题:linklink
    • @xsw2yaqw1 如果是这种情况,您可以通过dplyr::mutate(First = min(Date),.. 进行更正
    • 这是一个常见的问题。我想知道为什么没有更正或更改函数名称
    猜你喜欢
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2016-03-04
    • 2021-12-05
    相关资源
    最近更新 更多