微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在R中的组中标记第一年

如何解决在R中的组中标记第一年

我有一个结构如下的数据框:

+----------+------+
| ID       | year |
+----------+------+
| 1        | 2002 |
| 1        | 2003 |
| 1        | 2004 |
| 2        | 2015 |
| 2        | 2016 |
| 2        | 2017 |
| 2        | 2018 |
| 3        | 2004 |
| 3        | 2005 |
+----------+------+

我想添加一个标记ID中第一次(或最早)出现的变量以获取以下信息:

+----------+------+------+
| ID       | year | flag | 
+----------+------+------+
| 1        | 2002 | 1    |
| 1        | 2003 | 0    | 
| 1        | 2004 | 0    |
| 2        | 2015 | 1    |
| 2        | 2016 | 0    |
| 2        | 2017 | 0    |
| 2        | 2018 | 0    |
| 3        | 2004 | 1    | 
| 3        | 2005 | 0    |
+----------+------+------+

dplyr中有一种简单的方法吗?

解决方法

使用dplyr,我们可以按'ID'分组,并基于'year'的min值创建逻辑向量,并用+强制将其转换为二进制

df1 %>%
   group_by(ID) %>%
   mutate(flag = +(year == min(year))

如果数据已经order编辑

df1 %>%
    mutate(flag = !duplicated(ID))

或者如果“年份”已经order编辑

df1$flag <- !duplicated(df1$ID)
,

使用ave

的另一个基本R选项
transform(
  df,flag = ave(1:nrow(df),ID,FUN = function(x) seq_along(x)==1)
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。