[英]Extract data value from the output of melt in reshape2
我有一个采用以下格式的数据集,并希望为诸如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
您可以使用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"
的值,正如您在当前解决方案中指出的那样。
另外,如果您要一次性按照“设置”和“变量”的所有因子进行拆分,请执行以下操作:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.