2017-11-20 5 views
0

私が尋ねていることを言う良い方法があるかどうかは確かではありません。基本的に私はルートデータ(例えば、LAX-BWI、SFO-JFKなど)を持っています。私はそれをダミーにしたいので、飛行機が触れるすべての空港には基本的に1があります(方向性は問題ではないので、LAX-BWIはBWI-LAXと同じです)。例えばのでRummyで2つの値を持つファクタをコーディングする「ダミー」

 ROUTE | OFF | ON | 
    LAX-BWI|10:00|17:00| 
    LAX-SFO|11:00|13:00| 
    BWI-LAX|18:00|01:00| 
    BWI-SFO|15:00|20:00| 

BWI|LAX|SFO| OFF | ON | 
    1 | 1 | 0 |10:00|17:00| 
    0 | 1 | 1 |11:00|13:00| 
    1 | 1 | 0 |18:00|01:00| 
    1 | 0 | 1 |15:00|20:00| 

私は、文字列 "BWI-LAX" などのデータに引っ張ったりすることができいずれか2列ORIGと、その値は文字列ですDestは」となりBWI "と" LAX "と呼ばれる。

私が考えることができる最も近いことは、それを疑うことです。しかし、私が欲しいものについて実際の言葉があれば教えてください。私はこれが答えられたように感じますが、私はそれを検索する方法を考えることができません。

allDest <- sort(unique(unlist(strsplit(dataFrame$ROUTE, "-")))) 
for(i in allDest){ 
    dataFrame[, i] <- grepl(i, dataFrame$ROUTE) 
} 

このセット内のすべての空港のために1つの新しい列を作成し、飛行触れた場合TRUEまたはFALSEを示しています

+0

、 'ライブラリ(たくない場合は、計算後のドロップするのは簡単ですtidyverse); (ROUTE、n、fill = 0) ' – alistaire

答えて

0

必要はありません。 data.framesはちょうどので、私たちはすべて一度に余分な要素を割り当てることができます示していますされています

cities <- unique(unlist(strsplit(df$ROUTE, "-"))) 
df[, cities] <- lapply(cities, function(x) as.numeric(grepl(x, df$ROUTE))) 

# ROUTE OFF ON LAX BWI SFO 
#1 LAX-BWI 10:00 17:00 1 1 0 
#2 LAX-SFO 11:00 13:00 1 0 1 
#3 BWI-LAX 18:00 01:00 1 1 0 
#4 BWI-SFO 15:00 20:00 0 1 1 

ROUTE列は、あなたがそれ

他の選択肢の中で
1

誰かがちょうどので、私はhereから私の答えをコピーします非常によく似た質問を空港。あなたの代わりに0と1を使用する場合は、あなたが行うことができます:

allDest <- sort(unique(unlist(strsplit(dataFrame$ROUTE, "-")))) 
for(i in allDest){ 
    dataFrame[, i] <- grepl(i, dataFrame$ROUTE)*1 
} 

をTRUE * 1は1 FALSE * 1であるfor loopための0

+3

もしそれが非常に似ているなら、[重複としてフラグを立てる](https:///stackoverflow.com/help/duplicates) – alistaire

+0

allDest < - sort(unlist(strsplit(as.character(dataFrame $ ROUTE、 " - "))))) as.characterを追加して機能させる必要がありました。それは動作しますが、ベクターは完全なデータセットに対して大きすぎます。私は何かを微調整できるかどうか調べるためにそれを続けます。ありがとうございました! – versusChou

関連する問題