生成所有唯一的因子对并以相同的方式对齐其他变量 R
Generate all unique pairs of factor and align other variables in same way R
我有一个数据框,其中包含每个人的唯一个人 ID 和测量值,例如
> personDat <- data.frame(personID = c("A","B","C","D"),value = rnorm(4))
> personDat
personID value
1 A -0.9246883
2 B 0.5175514
3 C -1.0109688
4 D 1.1614124
现在我需要创建所有独特的个体对,我可以使用 combn
函数来完成:
> perCombs <- t(combn(personDat$personID,2))
> perCombs
[,1] [,2]
[1,] A B
[2,] A C
[3,] A D
[4,] B C
[5,] B D
[6,] C D
Levels: A B C D
现在我想在 perCombs
中添加两个额外的列,其中一个用于 personDat
中第二列中对应的 measurement/value 第一个 personID,然后是对应的值第二个人ID.
基本上我需要对唯一的 personID 对的所有值进行二元运算,如果我有列,我可以以快速矢量化的方式进行。
编辑: 最简单的做法是:
perCombs <- data.frame(per1 = perCombs[,1],
per2 = perCombs[,2],
val1 = matrix(0,6,1),
val2 = matrix(0,6,1))
for(i in 1:6){
print(i)
perCombs[i,3] <- personDat[as.character(personDat$personID)==as.character(perCombs[i,1]),2]
perCombs[i,4] <- personDat[as.character(personDat$personID)==as.character(perCombs[i,2]),2]
}
我们可以使用match
cbind(perCombs, `dim<-`(personDat$value[match(perCombs,
personDat$personID)], dim(perCombs)))
我有一个数据框,其中包含每个人的唯一个人 ID 和测量值,例如
> personDat <- data.frame(personID = c("A","B","C","D"),value = rnorm(4))
> personDat
personID value
1 A -0.9246883
2 B 0.5175514
3 C -1.0109688
4 D 1.1614124
现在我需要创建所有独特的个体对,我可以使用 combn
函数来完成:
> perCombs <- t(combn(personDat$personID,2))
> perCombs
[,1] [,2]
[1,] A B
[2,] A C
[3,] A D
[4,] B C
[5,] B D
[6,] C D
Levels: A B C D
现在我想在 perCombs
中添加两个额外的列,其中一个用于 personDat
中第二列中对应的 measurement/value 第一个 personID,然后是对应的值第二个人ID.
基本上我需要对唯一的 personID 对的所有值进行二元运算,如果我有列,我可以以快速矢量化的方式进行。
编辑: 最简单的做法是:
perCombs <- data.frame(per1 = perCombs[,1],
per2 = perCombs[,2],
val1 = matrix(0,6,1),
val2 = matrix(0,6,1))
for(i in 1:6){
print(i)
perCombs[i,3] <- personDat[as.character(personDat$personID)==as.character(perCombs[i,1]),2]
perCombs[i,4] <- personDat[as.character(personDat$personID)==as.character(perCombs[i,2]),2]
}
我们可以使用match
cbind(perCombs, `dim<-`(personDat$value[match(perCombs,
personDat$personID)], dim(perCombs)))