[英]on dcast() argument “value.var”
因此,我上次在 dataframe 上使用了 dcast() ,其中一列是 ID,其他多個代碼為每個 ID 分配。 我的 df1 看起來像這樣:
ID codes gfreq
123 FGV34 0.988
123 FGV34 0.988
123 FGV34 0.988
566 WER45 na
566 FGV34 0.988
566 FGV34 0.988
為了將上述格式操作為:
ID FGV34 WER45
123 1 0
566 1 1
dcast(df1, ID ~ codes)
而且效果很好。 現在,我有一個類似的 dataframe df2,它只有兩列,ID 和代碼。
ID codes
123 FGV34
123 FGV34
123 FGV34
566 WER45
566 FGV34
566 FGV34
當我將它運行到 dcast 中時: 1. 我收到關於 Value.var 被覆蓋並且代碼列用作 value.var 的警告,這沒問題 2. 這次我獲得 output 的格式完全不同。
ID FGV34 WER45
123 FGV34 NA
566 FGV34 WER45
我檢查了 df1 和 df2 中屬性的數據類型。 對於 ID 和代碼,它們是相同的。 我需要幫助獲取 output 像以前一樣使用 0 或 1 而不是 NA 和列名。 其次,我想了解 dcast() 的行為發生了哪些變化。
reshape2
和spread
都已被棄用或退役 - tidyverse
現在希望您使用pivot_wider
。 我不是最新的那種語法,但dcast
仍然可以用data.table
做你想做的事。
library(data.table)
d1 <- data.table(ID = c(11,11,11,12,12,12),
codes = c('a', 'a', 'a', 'b', 'a', 'a'),
gfreq = c(.5,.5,.5,NA,.5,.5))
dcast(d1, ID ~ codes)
#> Using 'gfreq' as value column. Use 'value.var' to override
#> Aggregate function missing, defaulting to 'length'
#> ID a b
#> 1: 11 3 0
#> 2: 12 2 1
d2 <- data.table(ID = c(11,11,11,12,12,12),
codes = c('a', 'a', 'a', 'b', 'a', 'a'))
dcast(d2, ID ~ codes)
#> Using 'codes' as value column. Use 'value.var' to override
#> Aggregate function missing, defaulting to 'length'
#> ID a b
#> 1: 11 3 0
#> 2: 12 2 1
## If you only want 1's and 0's
dcast(unique(d2), ID ~ codes,
fun.aggregate = length)
#> Using 'codes' as value column. Use 'value.var' to override
#> ID a b
#> 1: 11 1 0
#> 2: 12 1 1
由reprex package (v0.3.0) 於 2019 年 10 月 16 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.