dplyrを使用して複数のデータフレームを関数に渡し、要約された変数を含むデータフレームを返すことを望んでいます。これは集計レベルでは問題なく実行できますが、係数でグループ化しようとすると、関数は集計全体に対して同じ値を返します。これが私が持っている例で、うまく機能しています:
compCalc <- function(frame,segment) {
newFrame <- frame %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(frame$totalCompensationCost),
TCC_per_fte = sum(frame$totalCompensationCost)/sum(frame$FTEs),
TCC_per_hour = sum(frame$totalCompensationCost)/sum(frame$hours),
total_wages = sum(frame$totalWages))
return(newFrame)
}
次に、次のように関数を呼び出します。
nuSectorOverall <- compCalc(dfEx, "allNonUnion")
そして私はこのような素晴らしい出力を得る:
Overall
seg FTEs total_TCC TCC_per_fte TCC_per_hour total_wages
allNonUnion 3980.559 185865849 46693.4 24.09153 171344280
ここで、group_by句を次のようにミックスに導入すると、次のようになります。
compCalcEmp <- function(frame,segment) {
newFrame <- frame %>%
group_by(employeeGroup) %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(frame$totalCompensationCost),
TCC_per_fte = sum(frame$totalCompensationCost)/sum(frame$FTEs),
TCC_per_hour = sum(frame$totalCompensationCost)/sum(frame$hours),
total_wages = sum(frame$totalWages))
return(newEmpFrame)
}
私は次の問題に遭遇します:
employeeGroup seg FTEs total_TCC TCC_per_fte TCC_per_hour total_wages total_wages_per_fte
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Bargaining Unit overall 139.2841 185865849 46693.4 24.09153 171344280 43045.28
2 Management & Excluded overall 402.0311 185865849 46693.4 24.09153 171344280 43045.28
3 Non-Union overall 3439.2438 185865849 46693.4 24.09153 171344280 43045.28
ご覧のとおり、FTEを除いて、グループ化された変数ごとに同じ値を計算しています。
これに似た質問があるかどうか、長くて見づらいので、見つからなかった場合はお詫びします。どんな助けでも大歓迎です!
よろしくお願いします
r
パイプ内のframe$
列を参照するために使用する必要はありません。代わりにこれを試してください:frame
dplyr
compCalcEmp <- function(frame,segment) {
newFrame <- frame %>%
group_by(employeeGroup) %>%
summarise(seg = segment,
FTEs = sum(FTEs),
total_TCC = sum(totalCompensationCost),
TCC_per_fte = sum(totalCompensationCost)/sum(FTEs),
TCC_per_hour = sum(totalCompensationCost)/sum(hours),
total_wages = sum(totalWages))
return(newFrame)
}
group_by
その場合frame
、サブセットグループではなく全体に関して要約しているため、以前は機能していませんでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加