r - 如何根据另一个变量的第一个条目创建新变量
问题描述
我创造了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
...
非常感谢!!!
解决方案
您可以选择每个的第一行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)
推荐阅读
- db2 - DB2 使用 CASE 替换字符串时
- spring - 将 REST API 添加到 Spring MVC 应用程序
- java - 如何使用倒车法添加多个解决方案
- javascript - 想要在 JS 中使用循环排序
- postgresql - 如何在 @@ postgres 运算符的单引号内进行参数替换
- mysql - 卸载应用程序后从 mysql 数据库中删除表
- javascript - 使用 Ajax 和 Django 填充 SELECT 选项
- heroku - 我在 Heroku 上有一个严重的不和谐机器人,它不应该停止,但 1 天后它进行了完全重置
- cmd - 如何从命令输出中提取/显示任意两列及其值?
- java - 如何访问另一个类的对象