2014-12-05 30 views
1

是否有可能在使用R的表格中顯示雙因子的數據?如何使用雙因子數據創建表格

請考慮我的例子與複製。

所以人們在每個細胞中有兩個或更多的值。

我嘗試使用ftable()和表(),但我沒有在任何地方得到:(

非常感謝你的幫助

例輸入

A B Value 
1 1 1.2 
1 1 1.4 
1 2 2.1 
1 2 2.0 
2 1 1.1 
2 1 1.2 
2 2 3.1 
2 2 3.1 

所需的輸出,像 enter image description here

+0

我的主要目的是說明數據,因爲我想在R Markdown演示文稿中顯示它。因此,我正在尋找具有兩行兩列的R表達式作爲「矩陣」,其中每個單元格都包含兩個值,如我的示例中所示。 – feinmann 2014-12-05 12:07:26

+0

[R中有多個以逗號分隔的條目的唯一行]的可能重複(http://stackoverflow.com/questions/8083984/unique-rows-with-multiple-comma-separated-entries-in-r) – Henrik 2014-12-05 12:19:40

+0

感謝您的耐心到目前爲止。你看,我的問題(當以正確的方式描述時)是非常基本的。 – feinmann 2014-12-05 12:23:23

回答

3

也許像下面這樣的東西會有幫助:

library(data.table) 
library(reshape2) 
dcast.data.table(
    as.data.table(df)[, `:=`(A = paste0("A", A), ## Prefix A values with "A" 
          B = paste0("B", B))], ## Prefix B values with "B" 
    A ~ B, value.var = "Value",     ## Our casting formula 
    fun.aggregate = function(x)     ## Our aggregation formula 
    paste(sprintf("%2.2f", x), collapse = "/")) ## sprintf -> uniform format 
#  A  B1  B2 
# 1: A1 1.20/1.40 2.10/2.00 
# 2: A2 1.10/1.20 3.10/3.10 

我在代碼中添加了註釋,以解釋每一步發生了什麼。

+0

首先你需要df <-read.table(「mydata.txt」)。是否可以粘貼換行符?非常好的解決方案btw – feinmann 2014-12-05 14:30:22

+1

@feinmann,我不認爲你可以用這種方式在控制檯中獲得新的行。「\ n」如果你想嘗試它,則需要另一次轉義。 – A5C1D2H2I1M1N2O1R2T1 2014-12-05 14:41:57

0

tapply功能是將被施加到一個交叉分類值的標準鹼-R機制以獲取機能缺失:

tapply(dat$Value, list(A=dat$A,B=dat$B) , function(x) paste(x,collapse="/")) 
#---------- 
    B 
A 1   2   
    1 "1.2/1.4" "2.1/2" 
    2 "1.1/1.2" "3.1/3.1" 

如果想要註釋:

tapply(dat$Value, list(A=dat$A,B=dat$B) , function(x) paste("V1=",x[1],"V2=",x[2])) 
#-------------- 
    B 
A 1     2     
    1 "V1= 1.2 V2= 1.4" "V1= 2.1 V2= 2" 
    2 "V1= 1.1 V2= 1.2" "V1= 3.1 V2= 3.1" 
相關問題