2017-11-20 8 views
0

내가 무엇을 요구하는지 더 좋은 방법이 있는지는 확실하지 않습니다. 기본적으로 경로 데이터 (예 : LAX-BWI, SFO-JFK 등)가 있습니다. 나는 기본적으로 모든 공항에 대해 비행이 감동 (방향성은 중요하지 않으므로 LAX-BWI는 BWI-LAX와 동일 함)하는 1을 갖기 때문에 더미로 만들고 싶습니다. 그래서 예를 들면"더미"는 R 값이 두 가지 인 요소를 코딩합니다.

:

 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| 

I 문자열 "BWI-LAX"로 데이터를 당기거나 가질 수있는 두 개의 열 원래 값과 값을 가지는 문자열이다 신지 "가 BWI "및"LAX ".

제가 생각할 수있는 가장 가까운 것은 그것을 어루 만지는 것입니다.하지만 내가 원하는 것을 실제로 말하면 알려주세요. 나는 이것이 응답 된 것처럼 느낀다. 그러나 나는 그것을 찾는 방법을 생각할 수 없다.

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

이 집합의 모든 공항에 대한 하나의 새로운 열을 생성하고 비행에 닿으면 TRUE 또는 FALSE로 나타냅니다

+0

을하지 않으려면 계산 한 후 드롭 정도로 쉽게,'라이브러리 : data.frames는 그래서 우리는 모두 한 번에 추가 요소를 지정할 수 있습니다 나열되어 있습니다 tidyverse); (ROUTE, n, fill = 0) ' – alistaire

답변

0

for loop 불필요하다. (

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을 원하는 한 경우 대신 당신이 할 수 있습니다

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

TRUE * 1 1 거짓 * 1 0

+3

매우 유사하다면 [중복 된 것으로 표시]해야합니다 (https :// /). – alistaire

+0

allDest <- sort (unique (unlist (strsplit as.character (dataFrame $ ROUTE, "-"))))) as.character를 추가하여 작동되도록해야했습니다. 작동하지만 벡터가 전체 데이터 세트에 비해 너무 커졌습니다. 내가 뭔가를 조정할 수 있는지 알아보기 위해 계속 놀고 있습니다. 고맙습니다! – versusChou