Идентификация соответствия в данных панели
Мои данные организованы следующим образом:
ID Year ID2012 var1 var2
1 2012 .
A 2014 1
A 2016 .
2 2012 .
B 2014 2
B 2016 .
За 2014 год я знаю соответствие между ID2012 и ID2014 и знаю, что ID2016 кодируется так же, как и ID2014. Теперь я хочу сделать ID по годам непротиворечивым, чтобы получить панель: либо А заменяется на 1, либо наоборот.
ID Year ID2012 var1 var2
A 2012 .
A 2014 1
A 2016 .
B 2012 .
B 2014 2
B 2016 .
или же
ID Year ID2012 var1 var2
1 2012 .
1 2014 1
1 2016 .
2 2012 .
2 2014 2
2 2016 .
Между ID2012 и ID2014 не может быть арифметического правила, которое можно было бы использовать.
1 ответ
Решение
Вот один из способов сделать это:
# Read in the data
df <- read.table(text = "ID Year ID2012 var1
1 2012 . 9.1
A 2014 1 2.2
A 2016 . 1.0
2 2012 . 4.8
B 2014 2 4.7
B 2016 . 6.1",
header = T, stringsAsFactors = F)
# Find the positions where ID2012 tells us what ID to replace it with
ID.map <- match(df$ID, df$ID2012) # [1] 2 NA NA 5 NA NA
# Replace values in the ID column where they are defined in the map
df$ID[!is.na(ID.map)] <- df[ID.map[!is.na(ID.map)], 'ID']
# Result:
# ID Year ID2012 var1
# 1 A 2012 . 9.1
# 2 A 2014 1 2.2
# 3 A 2016 . 1.0
# 4 B 2012 . 4.8
# 5 B 2014 2 4.7
# 6 B 2016 . 6.1