Dmi*_* I. 4 r sequence missing-data dataframe
我想做以下事情:
组合成一个数据框,两个向量
数据帧应显示对齐的两个向量中的相等序列,如果向量缺少另一个向量中存在的序列,则列中的NA.
例如:
vector 1 vector 2 vector 1 vector 2
1 1 a a
2 2 g g
3 3 b b
4 1 or h a
1 2 a g
2 3 g b
5 4 c h
5 c
Run Code Online (Sandbox Code Playgroud)
应该组合成数据框架
1 1 a a
2 2 g g
3 3 b b
4 NA h NA
1 1 or a a
2 2 g g
NA 3 NA b
NA 4 NA h
5 5 c c
Run Code Online (Sandbox Code Playgroud)
我所做的是搜索合并,合并,cbind,plyr示例,但无法找到解决方案.我恐怕我需要开始用嵌套for循环编写一个函数来解决这个问题.
注意 - 这是作为OP的第一个版本的答案而提出的.从那时起,这个问题就被修改了,但我认为这个问题仍然没有明确定义.
这是一个适用于您的integer示例的解决方案,也适用于numeric矢量.我也假设:
value[i+1] <= value[i]如果您的向量是非数字的,或者如果我的某个假设不符合您的问题,那么您必须澄清.
v1 <- c(1,2,3,4,1,2,5)
v2 <- c(1,2,3,1,2,3,4,5)
v1.sequences <- split(v1, cumsum(c(TRUE, diff(v1) <= 0)))
v2.sequences <- split(v2, cumsum(c(TRUE, diff(v2) <= 0)))
align.fun <- function(s1, s2) { #aligns two sequences
s12 <- sort(unique(c(s1, s2)))
cbind(ifelse(s12 %in% s1, s12, NA),
ifelse(s12 %in% s2, s12, NA))
}
do.call(rbind, mapply(align.fun, v1.sequences, v2.sequences))
# [,1] [,2]
# [1,] 1 1
# [2,] 2 2
# [3,] 3 3
# [4,] 4 NA
# [5,] 1 1
# [6,] 2 2
# [7,] NA 3
# [8,] NA 4
# [9,] 5 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |