1
如何編寫for循環或使用一個函數來檢查數據中的隨着時間的推移是否相等?在羣組內檢查一致性隨時間的變化
我有國會選區的時間序列數據的排列像下面的小片,但當然更多的數據:
dput(droplevels(head(CongressionalData[1:5],20)))
structure(list(state_dist = structure(c(1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("AK_1",
"AL_1", "AL_2", "AL_3"), class = "factor"), electionyear = c(2002L,
2004L, 2006L, 2008L, 2010L, 2002L, 2004L, 2006L, 2008L, 2010L,
2002L, 2004L, 2006L, 2008L, 2010L, 2002L, 2004L, 2006L, 2008L,
2010L), cong = c(108L, 109L, 110L, 111L, 112L, 108L, 109L, 110L,
111L, 112L, 108L, 109L, 110L, 111L, 112L, 108L, 109L, 110L, 111L,
112L), name = structure(c(6L, 6L, 6L, 6L, 6L, 1L, 1L, 1L, 1L,
1L, 3L, 3L, 3L, 2L, 4L, 5L, 5L, 5L, 5L, 5L), .Label = c("BONNER",
"BRIGHT", "EVERETT", "ROBY", "ROGERS", "YOUNG"), class = "factor"),
republican = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("state_dist",
"electionyear", "cong", "name", "republican"), row.names = c(NA,
20L), class = "data.frame")
我想只會使地區內比較,所以我要檢查如果一個地區在共和黨和民主黨代表之間切換。爲了簡單起見,我只想生成一個0或1的列表用於切換或不切換。我的第一個想法是一個for循環,如:
group1 <- c()
for (i in 1:(nrow(CongressionalData) - 1)) {
if (CongressionalData$republican[i] == CongressionalData$republican[i+1]) {
group1 <- c(group1, 1)
}
else {
group1 <- c(group1, 0)
}
}
但是,這比較每個地區上次選舉與下一個區的第一次選舉。
我在其他地方看到,這是很少使用的R中循環是個好主意,但我有什麼功能會在這裏工作很沒有意義。
是的,這基本上是我在找的。你能解釋一下這段代碼在做什麼嗎?我希望能夠在未來使用這一戰略。 – ZLevine
你應該把'library(data.table)'放在某個地方 – Frank
@Frank,是的,只是添加了它。剛添加了解釋。希望這很清楚。 – Psidom