簡體   English   中英

從reshape2中的熔體輸出中提取數據值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM