2017-06-08 38 views
2

R:私が参加したファイルは2つあります。どちらにも手数料賃料データが含まれていますが、仕事コードの賃金構造期間が異なるため、2つのファイルがあります。たとえば、ファイル1のすべてのジョブコードは毎月手数料を支払われ、ファイル2のすべてのジョブコードは2ヶ月ごとに手数料を支払われます。 各従業員ID(現在の要素)の月ごとに新しいフィールドに集計(合計)する必要があるデータを正確かつ公平に分析するために、私の問題は正常に表示されることです各従業員の月の給料を合計しますが、現在は異なる年を無視します。私は1年と2ヶ月の間、あるいは6/2015-6/2017のダミーコーディングを有料月間1-24として普及することに反対していませんが、これを一度に行う方法があるのだろうかと思います。複数の年と月の支払いデータを毎月の合計で変換するR

電流:

Check_DT EMPLID DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS 
2015-12-18 99999999 23231606 100880    W   1203 
2015-12-24 99999999 23231606 100880    W   597 
2015-12-31 99999999 23231606 100880    W   625 
2016-01-08 99999999 23231606 100880    W   245 
2016-01-13 99999999 23231606 100880    W   480 
2016-01-15 99999999 23231606 100880    W   758 
2016-01-22 99999999 23231606 100880    W   599 
2016-01-29 99999999 23231606 100880    W   551 
2016-02-05 99999999 23231606 100880    W   767 
2016-02-12 99999999 23231606 100880    W   880 
2016-02-19 99999999 23231606 100880    W   557 
2016-02-26 99999999 20441606 100880    W   909 
2016-03-04 99999999 20441606 100880    W   989 
2016-03-11 99999999 20441606 100880    W   751 
2016-03-18 99999999 20441606 100880    W   776 
2016-03-25 99999999 20441606 100880    W   770 
2016-04-01 99999999 20441606 100880    W   712 
2016-04-08 99999999 20441606 100880    W   602 
2016-04-15 99999999 20441606 100880    W   798 
2016-04-22 99999999 20441606 100880    W   527 

私が欲しいもの(私はクラスター分析を実行しているつもりです、実際に必要な):

>Check_DT EMPLID DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS Year Month Pay 
>2015-12-18 99999999 23231606 100880    W   1203 2015 12 2425 
>2015-12-24 99999999 23231606 100880    W   597 
>2015-12-31 99999999 23231606 100880    W   625 
>2016-01-08 99999999 23231606 100880    W   245 2016 01 2633 
>2016-01-13 99999999 23231606 100880    W   480 
>2016-01-15 99999999 23231606 100880    W   758 
>2016-01-22 99999999 23231606 100880    W   599 
>2016-01-29 99999999 23231606 100880    W   551 
>2016-02-05 99999999 23231606 100880    W   767 
>2016-02-12 99999999 23231606 100880    W   880 
>2016-02-19 99999999 23231606 100880    W   557 
>2016-02-26 99999999 20441606 100880    W   909 
>2016-03-04 99999999 20441606 100880    W   989 
>2016-03-11 99999999 20441606 100880    W   751 
>2016-03-18 99999999 20441606 100880    W   776 
>2016-03-25 99999999 20441606 100880    W   770 
>2016-04-01 99999999 20441606 100880    W   712 
>2016-04-08 99999999 20441606 100880    W   602 
>2016-04-15 99999999 20441606 100880    W   798 
>2016-04-22 99999999 20441606 100880    W   527 

等...私はさえ年間の月に反対しておりません年と月のコンボが繰り返される日付は、私は重複を取り除くことができます。リマインダとして、ファイル内の一部の人は毎週支払われ、他の人は払い戻されます。ここで

は、私がやったことです:

#Convert weekly/bimonthly pay to monthly sum of pay 
    paydat_all$monthlypay <- month(paydat_all$Check_DT) 
    aggregate(MAX._TTL.GROSS~monthlypay+EMPLID, FUN = sum, data = paydat_all) 

答えて

1

これはあなたが

library(lubridate) 
library(dplyr) 

data = 'Check_DT EMPLID DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS 
"2015-12-18" 99999999 23231606 100880    W   1203 
"2015-12-24" 99999999 23231606 100880    W   597 
"2015-12-31" 99999999 23231606 100880    W   625 
"2016-01-08" 99999999 23231606 100880    W   245 
"2016-01-13" 99999999 23231606 100880    W   480 
"2016-01-15" 99999999 23231606 100880    W   758 
"2016-01-22" 99999999 23231606 100880    W   599 
"2016-01-29" 99999999 23231606 100880    W   551 
"2016-02-05" 99999999 23231606 100880    W   767 
"2016-02-12" 99999999 23231606 100880    W   880 
"2016-02-19" 99999999 23231606 100880    W   557 
"2016-02-26" 99999999 20441606 100880    W   909 
"2016-03-04" 99999999 20441606 100880    W   989 
"2016-03-11" 99999999 20441606 100880    W   751 
"2016-03-18" 99999999 20441606 100880    W   776 
"2016-03-25" 99999999 20441606 100880    W   770 
"2016-04-01" 99999999 20441606 100880    W   712 
"2016-04-08" 99999999 20441606 100880    W   602 
"2016-04-15" 99999999 20441606 100880    W   798 
"2016-04-22" 99999999 20441606 100880    W   527' 

paydat_all <- read.table(text=data, header=TRUE, 
         colClasses=c("Date", "character", "character", 
             "character", "factor", "integer")) 

paydat_all <- paydat_all %>% 
       mutate(Year = year(Check_DT), 
        Month = month(Check_DT)) %>% 
       group_by(EMPLID, DEPTID, JOBCODE, Year, Month) %>% 
       summarise(sum(MAX._TTL.GROSS)) 
+0

Rスクリプトのみmutate_implの整数?:「エラー(.dataの、ドット)で使用することが変異することができます。無効な添字タイプ '整数' –

+0

あなたの回答を更新する時間を割いていただきありがとうございます。興味深い現象が発生していますが、ほとんどの場合はすべて正確ですが、一部の従業員の場合、 2ヶ月から1ヶ月に、3ヶ月を別の月に分けた。しかし、5月ごとにそれをしません....ここで何が起こっていると思いますか? –

+0

NVM、それは仕事コードが違っていたからです –

1

探している結果を取得する必要がありますベースRのaveインライン集合場所のためを考えてみましょう:

  • 最初のargは、集計する列です。
  • その後カンマで区切られた1つ以上の引数は、集計タイプの明示的な名前FUN
  • でグループ化する因子レベルです。

私は2番目のバージョンを使用しようとすると、次のエラーを取得しています

data = 'Check_DT EMPLID DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS 
"2015-12-18" 99999999 23231606 100880    W   1203 
"2015-12-24" 99999999 23231606 100880    W   597 
"2015-12-31" 99999999 23231606 100880    W   625 
"2016-01-08" 99999999 23231606 100880    W   245 
"2016-01-13" 99999999 23231606 100880    W   480 
"2016-01-15" 99999999 23231606 100880    W   758 
"2016-01-22" 99999999 23231606 100880    W   599 
"2016-01-29" 99999999 23231606 100880    W   551 
"2016-02-05" 99999999 23231606 100880    W   767 
"2016-02-12" 99999999 23231606 100880    W   880 
"2016-02-19" 99999999 23231606 100880    W   557 
"2016-02-26" 99999999 20441606 100880    W   909 
"2016-03-04" 99999999 20441606 100880    W   989 
"2016-03-11" 99999999 20441606 100880    W   751 
"2016-03-18" 99999999 20441606 100880    W   776 
"2016-03-25" 99999999 20441606 100880    W   770 
"2016-04-01" 99999999 20441606 100880    W   712 
"2016-04-08" 99999999 20441606 100880    W   602 
"2016-04-15" 99999999 20441606 100880    W   798 
"2016-04-22" 99999999 20441606 100880    W   527' 

paydat_all <- read.table(text=data, header=TRUE, 
         colClasses=c("Date", "character", "character", 
             "character", "factor", "integer")) 
# MONTH AND YEAR 
paydat_all[c("Month", "Year")] <- sapply(c("%m", "%y"), 
             function(d) format(paydat_all$Check_DT, d)) 

# THREE GROUP BY VARS WITH FORMAT() TO EXTRACT DATE TYPES 
paydat_all$PaySum <- ave(paydat_all$`MAX._TTL.GROSS`, paydat_all$Month, 
         paydat_all$Year, paydat_all$EMPLID, FUN=sum) 
head(paydat_all) 
#  Check_DT EMPLID DEPTID JOBCODE PAY_FREQUENCY MAX._TTL.GROSS Month Year PaySum 
# 1 2015-12-18 99999999 23231606 100880    W   1203 12 15 2425 
# 2 2015-12-24 99999999 23231606 100880    W   597 12 15 2425 
# 3 2015-12-31 99999999 23231606 100880    W   625 12 15 2425 
# 4 2016-01-08 99999999 23231606 100880    W   245 01 16 2633 
# 5 2016-01-13 99999999 23231606 100880    W   480 01 16 2633 
# 6 2016-01-15 99999999 23231606 100880    W   758 01 16 2633 
+0

「%m」、「%y」を反転させて、ちょうど私が欲しかったように見せかけるように変換した、偉大な人) –

+0

おっと!間違いなくタイプミス。それに応じて編集。私は解決策が助けて欲しい。 – Parfait

関連する問題