2013-05-08 5 views
0

У меня есть следующий фрейм данных, включая рестораны (id #), владельца и дату покупки. Иногда в ресторане меняется собственность, но для целей анализа я хочу создать еще один столбец, в котором будет только имя последнего владельца, это определяется «датой покупки». Как создать новый столбец? В этом примере ресторан 23 меняет руку на 1/1/2013, поэтому я хочу включить только имя нового владельца (Bob) в качестве текущего владельца для всех строк для этого ресторана, как показано ниже. Если ресторан не меняет руки, сохраните то же имя для столбца «текущий владелец» в качестве столбца «владелец».Создание нового столбца в фрейме данных R на основе значений в нескольких столбцах

Restaurant <- c(23,23,23,23,23,23,23,15,15,15,15,17,17,17,17) 

    owner <- c("Chuck","Chuck","Chuck","Chuck","Bob","Bob","Bob", 
    "Hazel","Hazel","Hazel","Hazel","Pete","Pete","Pete","Pete") 

    purchaseDate <- c("3/4/2011","3/4/2011","3/4/2011","3/4/2011", 
    "1/1/2013","1/1/2013","1/1/2013","4/11/2010","4/11/2010","4/11/2010", 
    "4/11/2010","9/2/2012","9/2/2012","9/2/2012","9/2/2012") 

    df <- data.frame(Restaurant = Restaurant, owner=owner, purchaseDate=purchaseDate) 

    df$currentOwner <- c("Bob","Bob","Bob","Bob","Bob","Bob","Bob","Hazel","Hazel","Hazel","Hazel","Pete","Pete","Pete","Pete") 

ответ

0

Вы можете использовать это:

do.call(rbind, by(df, df$Restaurant, function(d) 
     within(d, currentOwner2 <- as.character(
      owner[which.max(as.Date(purchaseDate, format="%d/%m/%Y"))])))) 

Спасибо @Thomas для землеройных этот вопрос :-)

+0

совершенен! Благодарю. –

Смежные вопросы