Соответствие идентификатора в данных панели - PullRequest
0 голосов
/ 26 апреля 2018

Мои данные организованы следующим образом:

ID  Year  ID2012   var1   var2
1   2012     .
A   2014     1
A   2016     .
2   2012     .
B   2014     2
B   2016     .

В 2014 году я знаю соответствие между ID2012 и ID2014, и я знаю, что ID2016 кодируется так же, как и ID2014.Теперь я хочу сделать идентификатор по годам последовательным, чтобы получить панель: либо А заменяется на 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 Ответ

0 голосов
/ 26 апреля 2018

Вот один из способов сделать это:

# 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
...