是否有可能在使用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
所需的輸出,像
是否有可能在使用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
所需的輸出,像
也許像下面這樣的東西會有幫助:
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
我在代碼中添加了註釋,以解釋每一步發生了什麼。
首先你需要df <-read.table(「mydata.txt」)。是否可以粘貼換行符?非常好的解決方案btw – feinmann 2014-12-05 14:30:22
@feinmann,我不認爲你可以用這種方式在控制檯中獲得新的行。「\ n」如果你想嘗試它,則需要另一次轉義。 – A5C1D2H2I1M1N2O1R2T1 2014-12-05 14:41:57
的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"
我的主要目的是說明數據,因爲我想在R Markdown演示文稿中顯示它。因此,我正在尋找具有兩行兩列的R表達式作爲「矩陣」,其中每個單元格都包含兩個值,如我的示例中所示。 – feinmann 2014-12-05 12:07:26
[R中有多個以逗號分隔的條目的唯一行]的可能重複(http://stackoverflow.com/questions/8083984/unique-rows-with-multiple-comma-separated-entries-in-r) – Henrik 2014-12-05 12:19:40
感謝您的耐心到目前爲止。你看,我的問題(當以正確的方式描述時)是非常基本的。 – feinmann 2014-12-05 12:23:23