タイトルが分かりにくいかもしれませんがご容赦ください。
と
df <- data.frame(profit = c(1, 1, 0, 0, 0, -1),
offerA = round(rnorm(6), 2),
offerB = round(runif(6), 2),
offerC = sample(1:6))
df
profit offerA offerB offerC
1 1 -0.51 0.91 6
2 1 -0.03 0.75 4
3 0 -1.02 0.28 5
4 0 0.63 0.61 1
5 0 2.32 0.37 2
6 -1 -0.15 0.43 3
次の条件の下でbid
、値に応じて名前が付けられたフィールドを追加する必要があります。profit
with(df,
if (profit > 0) {
apply(cbind(offerA, offerB, offerC), 1, max)
}
else if (profit = 0) {
apply(cbind(offerA, offerB, offerC), 1, mean)
}
else if (profit < 0) {
apply(cbind(offerA, offerB, offerC), 1, min)
}
)
この例では、 newdf
は次のようになります。
df
profit offerA offerB offerC bid
1 1 -0.51 0.91 6 6
2 1 -0.03 0.75 4 4
3 0 -1.02 0.28 5 1.42
4 0 0.63 0.61 1 0.75
5 0 2.32 0.37 2 1.56
6 -1 -0.15 0.43 3 -0.15
の値は行ごとに計算されるため、次のような関数を使用できるようにbid
関数を書きたいのですが、上記の条件を関数に追加する良い方法が思いつきません。私の質問が明確であることを願っています。ありがとう!addBid()
apply(df, 1, addBid)