首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Melt:R中的Reshape2返回值作为因子?

Melt:R中的Reshape2返回值作为因子?
EN

Stack Overflow用户
提问于 2017-07-05 21:23:56
回答 1查看 2.9K关注 0票数 0

我有一个堆叠的列表,格式如下:

代码语言:javascript
复制
> Canal
$Canal.Nymph
0d 3d 6d 9d 12d 15d 18d
1 50 30 30 40  30  10   0
2 30 50 30 40  40  20  20
3 40 30 20 30  20   0  10

$Canal.Adult
0d 3d 6d 9d 12d 15d 18d
1 20 30 20 10   0   0   0
2 30 20 30 10   0   0   0
3 40 10  0  0   0   0   0

当应用于melt:Reshape2时,它会产生以下长输出:

代码语言:javascript
复制
 > melt(Canal, id=Canal$value)
    variable value          L1
 1        0d    50 Canal.Nymph
 2        0d    30 Canal.Nymph
 3        0d    40 Canal.Nymph
 4        3d    30 Canal.Nymph
 5        3d    50 Canal.Nymph
 6        3d    30 Canal.Nymph
 7        6d    30 Canal.Nymph
 8        6d    30 Canal.Nymph
 9        6d    20 Canal.Nymph
 10       9d    40 Canal.Nymph
 11       9d    40 Canal.Nymph
 12       9d    30 Canal.Nymph
 13      12d    30 Canal.Nymph
 14      12d    40 Canal.Nymph
 15      12d    20 Canal.Nymph
 16      15d    10 Canal.Nymph
 17      15d    20 Canal.Nymph
 18      15d     0 Canal.Nymph
 19      18d     0 Canal.Nymph
 20      18d    20 Canal.Nymph
 21      18d    10 Canal.Nymph
 22       0d    20 Canal.Adult
 23       0d    30 Canal.Adult
 24       0d    40 Canal.Adult
 25       3d    30 Canal.Adult
 26       3d    20 Canal.Adult
 27       3d    10 Canal.Adult
 28       6d    20 Canal.Adult
 29       6d    30 Canal.Adult
 30       6d     0 Canal.Adult
 31       9d    10 Canal.Adult
 32       9d    10 Canal.Adult
 33       9d     0 Canal.Adult
 34      12d     0 Canal.Adult
 35      12d     0 Canal.Adult
 36      12d     0 Canal.Adult
 37      15d     0 Canal.Adult
 38      15d     0 Canal.Adult
 39      15d     0 Canal.Adult
 40      18d     0 Canal.Adult
 41      18d     0 Canal.Adult
 42      18d     0 Canal.Adult

除了列$value被作为类“...which”提供之外,因子是可以的。如何在$value as.numeric中直接获取输出?相反,应用as.numeric()会给出因子的数值。这是我第一次遇到这个问题。我的最终目标是将汇总函数(mean,sd)应用于与变量一致的值。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 23:41:10

我不相信有一种方法可以在对melt的调用中直接做到这一点,但在此之后,您可以尝试这样做:

代码语言:javascript
复制
df = melt(Canal, id=Canal$value)
df$value = as.numeric(as.character(df$value))

将因子转换为数字将采用因子级别,而您需要的是将因子的标签转换为数值。因此,下面的代码也应该有效:df$value = as.numeric(labels(df$value))

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44927537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档