首页 > 解决方案 > 如何根据另一个变量的第一个条目创建新变量

问题描述

我创造了df

  gvkey  year 
1  1004  1965    
2  1004  1966       
3  1004  1967      
4  1005  1950        
5  1005  1951      
...

gvkey= 公司编号

我的数据框包含 1,200 多个gvkeys具有不同起始值的唯一year.

我想在df称为的列中创建一个列,ipo_date该列等于year特定列中的第一个条目gvkey

  gvkey  year  ipo_date
1  1004  1965    1965
2  1004  1966    1965
3  1004  1967    1965
4  1005  1950    1950
5  1005  1951    1950
...

之后我想删除所有重复的行ipo_date并删除列year

  gvkey  ipo_date
1  1004   1965
2  1005   1950
...

非常感谢!!!

标签: rconditional-statementstransform

解决方案


您可以选择每个的第一行gvkey

library(dplyr)
df %>%  group_by(gvkey) %>%  slice(1L) %>%  rename_at(2, ~"ipo_date")

#  gvkey ipo_date
#  <int>    <int>
#1  1004     1965
#2  1005     1950

data.table在和基数 R中使用相同的逻辑,我们可以做

library(data.table)
setDT(df)[, .SD[1L], gvkey]

aggregate(year~gvkey, df, head, 1)

推荐阅读