R 建立列联表
我有这样的数据:R 建立列联表,r,loops,contingency,R,Loops,Contingency,我有这样的数据: A B 1 10 1 20 1 30 2 10 2 30 2 40 3 20 3 10 3 30 4 20 4 10 5 10 5 10 我想建立这样一个列联表: 10 20 30 40 10 1 3 2 0 20 3 0 2 0 30 2 2 0 0 40 0 0 0 0 含义:根据A列,B列每两个值在具体列联表中标记+1 你能帮我做这个吗 这是一个非常难看的答案,使用图像中的数据,因为我已经在你的问题上花费了太多时间。一般来说,
A B
1 10
1 20
1 30
2 10
2 30
2 40
3 20
3 10
3 30
4 20
4 10
5 10
5 10
我想建立这样一个列联表:
10 20 30 40
10 1 3 2 0
20 3 0 2 0
30 2 2 0 0
40 0 0 0 0
含义:根据A列,B列每两个值在具体列联表中标记+1
你能帮我做这个吗 这是一个非常难看的答案,使用图像中的数据,因为我已经在你的问题上花费了太多时间。一般来说,让结果依赖于变量的顺序是不实际的
A <- rep(c(1:4),c(3,2,3,3))
B <- c(10,10,30,10,20,30,20,10,10,20,30)
data <- data.frame(cbind(A,B))
#split by A
library(plyr)
data2 <- ddply(data,.(A),function(x){
combined_pairs <- cbind(x$B[-nrow(x)],
x$B[-1])
#return data where first is always lowest
smallest <- apply(combined_pairs,MARGIN=1,
FUN=min)
largest <- apply(combined_pairs,MARGIN=1,
FUN=max)
return(data.frame(small=smallest,large=largest))
})
library(reshape2)
result <- dcast(small~large,data=data2,
fun.aggregate=length)
> result
small 10 20 30
1 10 1 3 1
2 20 0 0 2
A我真的不明白你想要实现什么。当A有三行具有相同值时,如何定义“B列的每两个值”?你自己尝试过什么?图片中的例子:我没有看到图片。如果你指的是你给出的示例输出,那么很难推断它是如何产生的。例如,40在列B中,但不在列联表中。这里:非常感谢您的帮助。你可以忽略另一个例子,我还不清楚。请给出一个适当的例子,并一步一步地解释你想做什么。从最简单的情况开始:当A为1时,应如何处理数据?