R tidyr spread错误:行的标识符重复

时间:2018-05-08 21:22:52

标签: r tidyr reshape2 spread dcast

我在R上遇到了tidyr :: spread()函数的问题。

之前我运行了melt()函数来删除NAs值并缩小我的数据。

    `NPP0 <- melt(NPP, variable.names("3", "13", "14", "15", "16", "24", "25", "26"), na.rm=T)`

它工作得很好..并且产生了一个名为&#39;变量&#39;的列,我的&#39; variable.names&#39;,如上所述,以及一个带有相应值的值列。

    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?

2 个答案:

答案 0 :(得分:1)

我用这个解决了:

# Removing NA values #
NPP0 <- melt(NPP, variable.names("3", "13", "14", "15", "16", "24", "25",26"), na.rm=T)

library(tidyr)

NPP1 <- as.data.frame (NPP0 %>% 
  group_by(variable) %>% 
  mutate(id = row_number()) %>% 
  spread(variable, value) )

Which gives:
View(NPP1)
[Reulting dataframe][1]

  [1]: https://i.stack.imgur.com/kI1HD.png

tHANK you for helping..

答案 1 :(得分:0)

您的数据没有任何行标识符。这可能是原因。

NPP0$samples<-rownames(NPP0)
NPP1 <-  spread(NPP0, key='variable', value='value', fill=0)

尝试一下,我希望它有效。