2017-09-06 3 views
0

最も近い位の「その他の」地方自治体を持つ新しいデータセットを「グラスゴー」に作成したい低い。それは、同じ観察が何度か選択されるように置き換えによる選択です。それはに最も近い高いですと6回 - それは大文字と小文字の区別を入れ替えることで最も上の/下の照合 - どのように同じ観測を何度も選ぶ方法

データゾーン1004568は、グラスゴーのものの下に4最も近いだと4回 - 私は新しいデータセットで欲しい

DataZone<- c("1005247", "1003253", "1003708", "1003158", "1003428", 
"1004568", "1008765", "1001122", "1005234") 
LocalAuthority<-c("Other", "Glasgow","Glasgow","Glasgow","Glasgow", "Other", 
"Glasgow", "Glasgow", "Other") 
Rank<-c(1,2,3,4,5,6,7,8,9) 
df<-data.frame(DataZone, LocalAuthority, Rank) 

データゾーン1005247ですグラスゴーDZのうち4つ、グラスゴーDZの2つに最も近い。

データゾーン1005234から2回、それはグラスゴーのものの2

に高い最も近いように私が持っているコードは、私に関連するすべてのDataZonesに新しいデータセットを提供しますが、それはデータゾーンのために許可していません数回選ばれている:

df<-df[order(df$Rank),] 
IncControls = Loop %>% 
mutate(newcol = ifelse(!LocalAuthority=="Glasgow"& 
(lag(LocalAuthority)=="Glasgow"|lead(LocalAuthority)=="Glasgow"),1,0)) %>% 
filter(newcol==1) 

答えて

0

あなたは、出力の形式を指定する必要がありますしていますが、この

Lengths <- rle(LocalAuthority)$lengths 
# 1 4 1 2 1 
Positions <- cumsum(rle(LocalAuthority)$lengths) 
# 1 5 6 8 9 
isGlasgow <- rle(LocalAuthority)$values=="Glasgow" 
# FALSE TRUE FALSE TRUE FALSE 

F <- rep(DataZone[head(Positions[lead(isGlasgow)],-1)], Lengths[isGlasgow]) 
# "1005247" "1005247" "1005247" "1005247" "1004568" "1004568" 
R <- rep(DataZone[tail(Positions[lag(isGlasgow)],-1)], Lengths[isGlasgow]) 
# "1004568" "1004568" "1004568" "1004568" "1005234" "1005234" 

ans <- sort(c(F,R)) 
ans 
# "1004568" "1004568" "1004568" "1004568" "1004568" "1004568" "1005234" 
# "1005234" "1005247" "1005247" "1005247" "1005247" 

table(ans) 
# 1004568 1005234 1005247 
#  6  2  4 
+0

は、お返事ありがとうござい試すことができます。私は出力の形式が何を意味するのかよく分かりません(私はこれにはかなり新しいです)。私が探しているのは、より多くの変数を持つ元のデータとマージし、すべてのコントロールのすべての変数を含むデータセットを作成できるように、DataZonesのリストです。 このコードを使用すると、データ・ゾーンの一覧が表示されます。グラスゴー以外のグラスゴーがいくつかある場合、最後のグラスゴーのみがカウントされ、グラスゴーの最も近い上位/下位の役割を果たします。代わりに数える。 – Erika

関連する問題