【问题标题】:Extract data value from the output of melt in reshape2从reshape2中的melt输出中提取数据值
【发布时间】:2013-09-03 02:55:07
【问题描述】:

我有一个以下格式的数据集,并希望为每个组合(如 A_ALL、B_ALL、A_Part、B_part)提取数据值以进行统计分析。

目前,我能做的是

A_ALL <- data[data$variable=="All" & data$Set=="A",1]
A_Part <- data[data$variable=="Part" & data$Set=="A",1]

我想知道是否有更有效的方法来提取所有这些数据。

谢谢!

陈桐

**输入文件格式**

value   variable    Set
24.4003 All A
21.2582 All A
1.91043 All A
34.9642 All B
33.794  All B
16.6093 All B
16.6095 All B
24.4003 Part    A
21.2582 Part    A
34.9642 Part    B
33.794  Part    B
16.6093 Part    B

【问题讨论】:

  • 嗨!下面的答案对你有什么影响?如果它解决了您的问题,请考虑投票和/或接受它。如果没有,请留下评论或编辑您的问题,以向其他人表明此问题仍未解决。

标签: r reshape2 melt


【解决方案1】:

您可以使用split,它将创建您感兴趣的值的list

with(mydf[mydf$Set == "A", ], split(value, variable))
# $All
# [1] 24.40030 21.25820  1.91043
# 
# $Part
# [1] 24.4003 21.2582

在这里,我不是拆分整个数据集,而是拆分 Set == "A" 的值,正如您在当前解决方案中所需要的那样。


或者,如果你想一次性根据“Set”和“variable”的所有因素进行拆分:

with(mydf, split(value, list(Set, variable)))
# $A.All
# [1] 24.40030 21.25820  1.91043
# 
# $B.All
# [1] 34.9642 33.7940 16.6093 16.6095
# 
# $A.Part
# [1] 24.4003 21.2582
# 
# $B.Part
# [1] 34.9642 33.7940 16.6093

我建议坚持使用list,就像我在上面创建的那样。但是,如果您真的想要在您的工作区中拥有一大堆对象,您可以使用list2env 将列表项提取到您的环境中:

## I currently only have the original data.frame
ls()
# [1] "mydf"
list2env(with(mydf, split(value, list(Set, variable))), envir=.GlobalEnv)
# <environment: R_GlobalEnv>
ls()
# [1] "A.All"  "A.Part" "B.All"  "B.Part" "mydf"  
A.All
# [1] 24.40030 21.25820  1.91043
A.Part
# [1] 24.4003 21.2582
B.All
# [1] 34.9642 33.7940 16.6093 16.6095
B.Part
# [1] 34.9642 33.7940 16.6093

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2016-07-27
    • 2018-05-23
    • 2020-06-12
    • 2017-10-14
    相关资源
    最近更新 更多