Rコード:新しい列の家と住所に相当する金額を割り当てるために、空間的な場所を並べ替えるのに役立つ情報を探しています。「for、ifelse、if else、foreach、while」ループの100万コンボを試しました。いくつかのcsvファイルがあり、それらを追加してから、いくつかの列を追加しました。具体的には、Age == SeniorにTRUE / FALSE 1/0を追加して、新しい自宅の場所を特定しました。目標は、1が表示されるたびに同じ家番号を割り当て、次の1までその家番号を保持することです。すべての家番号が割り当てられたら、各建物の場所ですべての緯度/経度の中央値を生成し、その中央値の緯度を割り当てます。 / longを新しい列に追加します。中央値は、建物の場所ごとのGPSジャンプに役立ちます。私は家を数えるだけで立ち往生しています。最初の表:
緯度 | 経度 | 年齢 | Spatial_id | 地区 |
---|---|---|---|---|
5.582719 | -0.1596583 | 上級 | 1 | tc01 |
5.582721 | -0.1596585 | 大人 | 0 | tc01 |
5.588345 | -0.1656207 | 上級 | 1 | tc01 |
5.588341 | -0.1656206 | 大人 | 0 | tc01 |
5.588342 | -0.1656202 | 大人 | 0 | tc01 |
5.588348 | -0.1656203 | 子 | 0 | tc01 |
5.588219 | -0.1653842 | 上級 | 1 | tc01 |
5.588219 | -0.1653842 | 大人 | 0 | tc01 |
5.588225 | -0.1653841 | 子 | 0 | tc01 |
5.588226 | -0.1653841 | 子 | 0 | tc01 |
spatial.loc <- c()
spatial.bldg <- c()
house.id = 100000
for (i in 1:nrow(merge.tc01)) {
house.id = house.id + 1
if(merge.tc01$spatial_id[i] == 1){
spatial.loc <- append(spatial.loc, house.id)
spatial.bldg <- paste0(merge.tc01$district,"_", spatial.loc)
}
}
取得しようとしているポストプロダクション。
緯度 | 経度 | 年齢 | Spatial_id | 地区 | Spatial_bldg | Spatial_x | Spatial_y |
---|---|---|---|---|---|---|---|
5.582719 | -0.1596583 | 上級 | 1 | tc01 | tc01_100001 | 5.582720 | -0.1596583 |
5.582721 | -0.1596585 | 大人 | 0 | tc01 | tc01_100001 | 5.582720 | -0.1596583 |
5.588345 | -0.1656207 | 上級 | 1 | tc01 | tc01_100002 | 5.588344 | -0.1656204 |
5.588341 | -0.1656206 | 大人 | 0 | tc01 | tc01_100002 | 5.588344 | -0.1656204 |
5.588342 | -0.1656202 | 大人 | 0 | tc01 | tc01_100002 | 5.588344 | -0.1656204 |
5.588348 | -0.1656203 | 子 | 0 | tc01 | tc01_100002 | 5.588344 | -0.1656204 |
5.588219 | -0.1653842 | 上級 | 1 | tc01 | tc01_100003 | 5.588222 | -0.1653841 |
5.588219 | -0.1653842 | 大人 | 0 | tc01 | tc01_100003 | 5.588222 | -0.1653841 |
5.588225 | -0.1653841 | 子 | 0 | tc01 | tc01_100003 | 5.588222 | -0.1653841 |
5.588226 | -0.1653841 | 子 | 0 | tc01 | tc01_100003 | 5.588222 | -0.1653841 |
助けてくれてありがとう。
これは少し近づいています。正しい数の1を数えることができますが、それは満たされず、代わりにインデックスを繰り返します。
spatial.loc <- c()
spatial.bldg <- c()
house.id = 100000
for (i in 1:nrow(merge.tc01)) {
house.id = house.id + 1
if(merge.tc01$spatial_id[i] == 1){
spatial.loc <- append(spatial.loc, house.id)
spatial.bldg <- paste0(merge.tc01$district,"_", spatial.loc)
while (merge.tc01$spatial_id == 0) {
spatial.loc <- append(spatial.loc)
spatial.bldg <- paste0(merge.tc01$district,"_", spatial.loc)
}
}
}
spatial.loc
spatial.bldg
diff
erencesがどこで成長するかを調べて1
、を取り、cumsum
入れsprintf
ます。
d <- transform(d, spatial_bldg=sprintf("%s_1%05d", District,
cumsum(diff(c(0, Spatial_id)) == 1)))
d
# Latitude Longitude Age Spatial_id District spatial_bldg
# 1 5.582719 -0.1596583 Senior 1 tc01 tc01_100001
# 2 5.582721 -0.1596585 Adult 0 tc01 tc01_100001
# 3 5.588345 -0.1656207 Senior 1 tc01 tc01_100002
# 4 5.588341 -0.1656206 Adult 0 tc01 tc01_100002
# 5 5.588342 -0.1656202 Adult 0 tc01 tc01_100002
# 6 5.588348 -0.1656203 Child 0 tc01 tc01_100002
# 7 5.588219 -0.1653842 Senior 1 tc01 tc01_100003
# 8 5.588219 -0.1653842 Adult 0 tc01 tc01_100003
# 9 5.588225 -0.1653841 Child 0 tc01 tc01_100003
# 10 5.588226 -0.1653841 Child 0 tc01 tc01_100003
# 11 5.587270 -0.1743943 Senior 1 tc01 tc01_100004
# 12 5.587271 -0.1743942 Adult 0 tc01 tc01_100004
# 13 5.587270 -0.1743947 Child 0 tc01 tc01_100004
# 14 5.587282 -0.1743944 Child 0 tc01 tc01_100004
# 15 5.587273 -0.1743942 Adult 0 tc01 tc01_100004
# 16 5.587273 -0.1743941 Child 0 tc01 tc01_100004
sprintf
文字ベクトル及びさらなる目的、文字列または数値の任意の数で構成されています。文字ベクトルでは、さらに各オブジェクトを次々に組み込み、%d
整数と%s
文字列を使用してそれらの場所をマークすることができます。ヘルプページで検索できる他のタイプもあります?sprintf
。
おそらくあなたは異なる地区を持っているでしょう、ave
それから調べてください。
データ:
d <- read.csv("https://github.com/tnewton2/Rproject_tnewton2/files/6050112/merge_tc01.txt")
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加