r - 如何在R中识别跨年的添加/删除

标签 r dataframe dplyr

您好,我想确定与上一年的数据相比,哪一行是添加/删除的。这是数据框。

a <- data.frame(Ticker=c("AA","AA","BBX","AA","AAAAX","BBX"), Year=c(2009,2010,2010,2011,2011,2011))

如果上一年没有显示股票代码,我想创建一个虚拟变量 I=1。如果前几年没有显示 Ticker,我想创建另一个虚拟变量 A=1。在这个样本中,只有两年。但实际数据中,总共有10年左右。预期输出如下,

b <- data.frame(Ticker=c("AA","AA","BBX","AA","AAAAX","BBX"), Year=c(2009,2010,2010,2011,2011,2011),I=c(0,0,1,0,1,0),A=c(0,0,1,0,1,0))

谢谢!

最佳答案

data.table版本基于自连接,只是为了好玩。

代码设置 AI标记为 1 ,然后将行更改为 0当上一年或任何上一年与 Ticker 匹配时:

我正在加入a数据集,通过 data.table 语法返回自身 a[a] (table[jointable]),加入on= Ticker值,并比较 Year每个匹配中的 s Ticker组。
当有匹配时,IA值被覆盖:=0

library(data.table)
setDT(a)

a[, c("A","I","Yearp1") := .(1, 1, Year - 1)]
a[a, on=.(Ticker, Yearp1 = Year), I := 0]
a[a, on=.(Ticker, Year > Year), A := 0]
a[, Yearp1 := NULL]
a

#   Ticker Year A I
#1:     AA 2009 1 1
#2:     AA 2010 0 0
#3:    BBX 2010 1 1
#4:     AA 2011 0 0
#5:  AAAAX 2011 1 1
#6:    BBX 2011 0 0

关于r - 如何在R中识别跨年的添加/删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73614762/

相关文章:

r - 对列列表执行不同的函数,并使用 data.table 自动生成新的列名称

python - 使用附加列识别重复的行

python - 将 pandas 数据框中的三个单独的列转换为一个日期列

r - 如何根据 R 中同一列的两个值来改变新列

r - 在 R 中创建到 DBMS 的连接

r - 使用 R 中的 Survey 包进行单向方差分析

r - 按 DF 分组,然后使用 dplyr 过滤

r - 使用 `across()` 创建具有多个其他列的函数的新列

r - ggplot2 中的 qqline 与 facets

python - ValueError : 2 columns passed, 传递的数据有 1 列