1

是否有可能使用 R 在表中显示二阶数据?

请考虑我的复制示例。

因此,每个单元格中都有两个或多个值。

我尝试使用 ftable() 和 table() 但没有得到任何地方:(

非常感谢你的帮助

示例输入

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

所需的输出,例如 在此处输入图像描述

4

2 回答 2

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

我在代码中添加了注释来解释每一步发生了什么。

于 2014-12-05T14:24:34.137 回答
0

tapply函数是标准的 base-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"
于 2014-12-15T01:50:51.817 回答