亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問dcast錯誤:“聚合函數缺失:默認為長度”

請問dcast錯誤:“聚合函數缺失:默認為長度”

C++
慕萊塢森 2019-11-06 10:05:00
dcast錯誤:“聚合函數缺失:默認為長度”我的df看起來是這樣的:Id  Task Type    Freq  3     1    A       23     1    B       33     2    A       33     2    B       04     1    A       34     1    B       34     2    A       14     2    B       3我想通過ID重組并得到:Id   A    B …  Z    3    5    3      4    4    6        我試過:df_wide <- dcast(df, Id + Task ~ Type, value.var="Freq")得到了錯誤:聚合函數缺失:默認為長度我不知道該放什么進去fun.aggregate..有什么問題嗎?
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您收到此警告的原因是在fun.aggregate(見?dcast):

如果變量沒有標識每個輸出單元格的單個觀察,則需要聚合函數。默認為長度(帶有消息)(如果需要但未指定)

因此,當寬數據幀中的一個點有多個值時,就需要一個聚合函數。

基于您的數據的解釋:

當你使用dcast(df, Id + Task ~ Type, value.var="Freq")你得到:

  Id Task A B1  3    1 2 32  3    2 3 03  4    1 3 34  4    2 1 3

這是合乎邏輯的,因為對于每一個組合IdTaskType只有價值Freq..但是當你用dcast(df, Id ~ Type, value.var="Freq")您可以得到這個(包括一條警告消息):

Aggregation function missing: defaulting to length
  Id A B1  3 2 22  4 2 2

現在,回顧一下您的數據的頂部:

Id  Task Type    Freq  
3     1    A       23     1    B       33     2    A       33     2    B       0

你知道為什么會這樣。的每一個組合IdType中有兩個值Freq(ID 3:23A & 30用于類型B),雖然您只能在這個位置上放置一個值,但對于每個值,則只能將一個值放置在寬數據中。type..因此dcast希望將這些值聚合為一個值。默認的聚合函數是length,但是您可以使用其他聚合函數,如summeansd或自定義函數,方法是將它們指定為fun.aggregate.

例如,用fun.aggregate = sum你得到:

  Id A B1  3 5 32  4 4 6

現在沒有警告,因為dcast被告知在有多個值時該做什么:返回值的和。



查看完整回答
反對 回復 2019-11-07
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

例如,對于您使用的字符)使用toString-發揮匯總作用:dcast(df, Id ~ Type, value.var="Freq", fun.aggregate = toString)..或者,您也可以定義自己的聚合函數-例如:f.agg <- function(x) paste(x, collapse = "-")-并使用:dcast(df, Id ~ Type, value.var="Freq", fun.aggregate = f.agg) 

查看完整回答
反對 回復 2019-11-07
  • 2 回答
  • 0 關注
  • 642 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號