我对 R 上的 tidyr::spread() 函数有疑问。
以前我运行了 melt() 函数来删除 NAs 值并缩小我的数据。
`NPP0 <- melt(NPP, variable.names("3", "13", "14", "15", "16", "24", "25", "26"), na.rm=T)`
它工作得很好......并导致名为“变量”的列,我的“variable.names”,如上所述,以及一个具有相应值的值列。
variable value
2 3 2688.00
3 3 1432.00
4 13 1336.00
5 14 1152.00
8 .. 1832.00
现在我想返回并将每个变量按一列分组,对应于其分类名称。
Just checking..
str(NPP0)
'data.frame': 5783 obs. of 2 variables:
$ variable: Factor w/ 8 levels "3","13","14",..: 1 1 1 1 1 1 1 1 1 1 ...
$ value : num 2688 1432 1336 1152 1832 ...
Then:
NPP1 <- spread(NPP0, key='variable', value='value', convert = T)
Gives:
Error: Duplicate identifiers for rows (1, 2, 3,...)
我也尝试了 reshape2::dcast() 函数。虽然它给出了一些非常奇怪的东西:
NPP1 <- dcast(NPP0, value ~ variable, value.var = 'value')
Aggregation function missing: defaulting to length
value 3 13 14 15 16 24 25 26
1 0.16 0 0 0 0 0 1 0 0
2 0.92 0 7 0 0 0 0 0 0
3 1.00 0 2 0 0 0 0 0 0
Can anyone help with this?