是否有可能使用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
期望的输出,类似于
答案 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"