如何创建具有双因素数据的表

时间:2014-12-05 11:36:11

标签: r r-table

是否有可能使用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

期望的输出,类似于 enter image description here

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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"