0

レストラン (id#)、所有者、購入日を含む次のデータ フレームがあります。レストランの所有者が変わることもありますが、分析目的で、最新の所有者の名前のみを保持する別の列を作成したいと思います。これは「購入日」によって決定されます。この新しい列を作成するにはどうすればよいですか? この例では、レストラン 23 は 2013 年 1 月 1 日に所有者が変わるため、以下に示すように、このレストランのすべての行の現在の所有者として、新しい所有者の名前 (Bob) のみを含めたいと考えています。レストランの所有者が変わらない場合は、「現在の所有者」列の名前を「所有者」列と同じにします。

    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")
4

1 に答える 1

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に感謝します:-)

于 2013-07-03T21:19:08.360 に答える