Creando una variable que tiene un valor basado en otra variable en R (datos de panel).
Tengo un marco de datos que contiene información de panel de patentes y económica para los años 2012-2020. Las variables de datos son:
investment_year
, una variable invariante en el tiempo, que es el año en que una empresa determinada ha recibido una inversión inicial;patent_applications
, es el número anual de patentes presentadas por una determinada empresa. La empresa A, por ejemplo, presentó cinco patentes en 2018, dos en 2019, y así sucesivamente.
company_name investment_year year patent_applications
A 2018 2020 7
A 2018 2019 2
A 2018 2018 5
. . . .
. . . .
. . . .
A 2018 2012 4
B 2015 2020 10
B 2015 2019 3
B 2015 2018 7
. . . .
. . . .
. . . .
Me gustaría crear una variable que contenga el número de solicitudes en t+2
, donde t
es el año de inversión.
Así, por ejemplo, para la Empresa A
el número de solicitudes en t+2
(por ejemplo, patent_applications_t2
) sería 7
, ya que el año de inversión (2018) + 2
es igual a 2020
.
Intenté la línea de código siguiente, pero no produce el resultado correcto.
df$patent_applications_t2 <- df$patent_applications[df$Year == df$Investment_Year + 2]
davy.ai
Para crear una variable que contenga el número de solicitudes de patente en
t + 2
, el código debe utilizar la funciónwhich()
para subconjuntar las filas donde elyear
es igual ainvestment_year + 2
para cada empresa. Aquí está el código corregido:El código primero subconjunta las filas donde
year
es igual ainvestment_year + 2
para cada empresa utilizando la funciónwhich()
. Se seleccionan las columnascompany_name
ypatent_applications
porque queremos fusionar esta información de vuelta en el marco de datos original. La funcióncolnames()
renombra la segunda columna para indicar que es el número de solicitudes de patentes ent + 2
. Finalmente, la funciónmerge()
fusiona la nueva columnapatent_applications_t2
en el marco de datos originaldf
basándose encompany_name
. Al utilizarall.x = TRUE
, el marco de datos fusionado incluye todas las filas del marco de datos original incluso si no hay coincidencias en el nuevo marco de datos.