2016-08-31 6 views
2

dplyrを使用してオブジェクトを作成してから、xlsxを使用してspreadhseetに書き出します。xlsxパッケージを使用してExcelファイルを書き込むことができませんR

provFundedProp <- compensationBase2014 %>% 
group_by(provinciallyFunded) %>% 
summarise(total=sum(fundingRaw)) %>% 
mutate(percent = paste0(round(100 * total/sum(total),1), "%")) 

私は、最初のシートに書き込む::これは正常に動作し、私が必要とするファイルを与える

write.xlsx(provFundedProp, file="output/provFundedProp.xlsx",  
sheetName="provFundingSector") 

は、私は、次のコードを実行します。私はここに狂ったつもりです

Error: cannot convert object to a data frame 

provFundedServiceDivision <- compensationBase2014 %>% 
group_by(serviceDivision,provinciallyFunded) %>% 
summarise(total=sum(fundingRaw)) %>% 
mutate(percent = paste0(round(100 * total/sum(total),1), "%")) 

#write to second sheet 
write.xlsx(provFundedServiceDivision, file="output/provFundedSD.xlsx", 
sheetName="provFundingSD") 

私に次のエラーを与える:

私はその後、レベルを下る次のコードを実行します。一体誰が何が起こっているか考えているのですか? 私はこれを複数の祈りで試しましたが、何が起きているのか分かりません。

class(provFundedServiceDivision) [1] "grouped_df" "tbl_df" "tbl" 
"data.frame" 

Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 6 obs. of 4 
variables: 
$ serviceDivision : chr "AS" "AS" "CLS" "CLS" ... 
$ provinciallyFunded: chr "NPF" "PF" "NPF" "PF" ... 
$ total    : num 1.90e+06 3.97e+07 2.93e+07 5.70e+08 9.55e+07 ... 
$ percent   : chr "4.6%" "95.4%" "4.9%" "95.1%" ... 
- attr(*, "vars")=List of 1 
..$ : symbol serviceDivision 
- attr(*, "labels")='data.frame': 3 obs. of 1 variable: 
..$ serviceDivision: chr "AS" "CLS" "GS" 
..- attr(*, "vars")=List of 1 
.. ..$ : symbol serviceDivision 
..- attr(*, "drop")= logi TRUE 
- attr(*, "indices")=List of 3 
..$ : int 0 1 
..$ : int 2 3 
..$ : int 4 5 
- attr(*, "drop")= logi TRUE 
- attr(*, "group_sizes")= int 2 2 2 
- attr(*, "biggest_group_size")= int 2 

> traceback() 
7: stop(list(message = "cannot convert object to a data frame", 
call = NULL, cppstack = NULL)) 
6: .Call("dplyr_cbind_all", PACKAGE = "dplyr", dots) 
5: cbind_all(x) 
4: bind_cols(...) 
3: cbind(deparse.level, ...) 
2: cbind(rownames = rownames(x), x) 
1: write.xlsx(provFundedServiceDivision, file = "output/provFundedSD.xlsx", 
sheetName = "provFundingSD") 
+0

を得ます。.. 'class(provFundedServiceDivision)' –

+0

少なくとも、あなたは 'str(provFundedSer)の出力を提供することができます副ディビジョン)。たぶんエラーを取得した後に 'traceback()'の結果が出るかもしれません。 ;) – joran

+0

あなたの質問に情報を入れてください。そのため、あなたはあなたの質問を編集することができます。 – joran

答えて

1

eipi10は彼のソリューションで1日を保存しました!私は以下のコードを使用して、すべて正常に動作しました。

誰もが読んで助けてくれてありがとう。これは、スタックオーバーフローに関する私の最初の質問です。乾杯!

3

使用ungroup()あなたdplyrチェーンの終わりに:

provFundedServiceDivision <- compensationBase2014 %>% 
    group_by(serviceDivision,provinciallyFunded) %>% 
    summarise(total=sum(fundingRaw)) %>% 
    mutate(percent = paste0(round(100 * total/sum(total),1), "%")) %>% 

    # Add ungroup to the end 
    ungroup() 

#write to second sheet 
write.xlsx(provFundedServiceDivision, file="output/provFundedSD.xlsx", 
      sheetName="provFundingSD") 

の代わりに...

class(provFundedServiceDivision)[1] 
[1] "grouped_df" 

あなたは...このリターンを何

class(provFundedServiceDivision)[1] 
[1] "tbl_df" 
関連する問題