У меня есть набор данных с каждым состоянием, перечисленным с 1990 по 2016 год (27 наблюдений на штат, для 50 штатов, это 1350 наблюдений).В наборе данных у меня есть state
, year
, pass
(прохождение какого-то закона) и список штатов neighbors
.Данные выглядят так ...
> head(data)
state year pass neighbors
1 Alabama 1990 0 Mississippi,Tennessee,Georgia,Florida
2 Alabama 1991 0 Mississippi,Tennessee,Georgia,Florida
3 Alabama 1992 0 Mississippi,Tennessee,Georgia,Florida
4 Alabama 1993 0 Mississippi,Tennessee,Georgia,Florida
5 Alabama 1994 0 Mississippi,Tennessee,Georgia,Florida
6 Alabama 1995 0 Mississippi,Tennessee,Georgia,Florida
Я пытаюсь выяснить, как сделать следующее:
Например, взять state
и year
для строки1 (Алабама в 1990 г.), просмотрите список соседей в этой строке (каждый элемент) и найдите этот элемент (штат) в векторе состояний того же года, чтобы увидеть, приняли ли они этот закон pass==1
.Если это так, создайте новую переменную neighbor_passed
, оцененную в 1
.
Например, она будет повторяться, ища Миссисипи в 1990 году, чтобы увидеть, если pass == 1
, тогда Теннесси в 1990, чтобы увидеть, если pass==1
.Он будет делать это для каждой строки, соответствующей year
этой строки, для поиска, если pass==1
для какого-либо состояния в neighbors
в том же году.
Вот что я пробовал до сих пор:
f<-function(x){
x[5]<-0
for(row in 1:dim(x)[1]){
ego_state <- x[row,1]
ego_year <- x[row,2]
alter_list <- x[row,4]
alter_list <- as.character(unlist(alter_list))
neighbors <- unlist(strsplit(alter_list, "[,]"))
for(i in neighbors){
year <- ego_year
print(paste(i,year))
#if(x[1]==i && x[2]==year && x[3]==1){
#x[5]<-1
#}
}
}
}
Как вы можете видеть из того, что я прокомментировал, я хочу, чтобы функция просматривала столбец / переменную states
, чтобы найти элемент в neighbors
(например, Миссисипи) в том же самом эго.год (например, 1990), перейдите в строку ТО (где state
== Миссисипи и year
== 1990) и проверьте, если pass
== 1. Если это так, я хотел бы создать другую переменную(например, neighbor_passed
), где вводится значение 1.Для всех остальных 0 - это ввод.Затем продолжите итерацию для всех i в neighbors
, на year
и продолжите итерацию для каждой строки в наборе данных.