比方说,我有一个向量:R中压缩不连续的矢量连续矢量从1
4 8 10 12
我想将它压缩到一个矢量从1开始,像
1 2 3 4
怎么可能我在R里这么做?
更新:
我有两个向量:
4 6 10 7
8 6 6 2
,并希望将其转换为:
2 3 6 4
5 3 3 1
比方说,我有一个向量:R中压缩不连续的矢量连续矢量从1
4 8 10 12
我想将它压缩到一个矢量从1开始,像
1 2 3 4
怎么可能我在R里这么做?
更新:
我有两个向量:
4 6 10 7
8 6 6 2
,并希望将其转换为:
2 3 6 4
5 3 3 1
我们可以使用seq_along
v2 <- seq_along(v1)
如果有重复元件,并希望这些重复为具有相同数,使用match
match(v1, unique(v1))
#[1] 1 2 3 4
或factor
as.integer(factor(v1, levels = unique(v1)))
#[1] 1 2 3 4
在情况下,如果重复元素不相邻并想给他们不同的值,请使用rle
inverse.rle(within.list(rle(v1), values <- seq_along(values)))
#[1] 1 2 3 4
注意:涵盖了大部分情况,因为帖子是不那么清楚。
对于新的载体,我们一起串联,并做一个factor
或match
r1 <- match(vN, unique(sort(vN)))
r1
#[1] 2 3 6 4 5 3 3 1
split(r1, rep(1:2, lengths(list(v1N, v2N))))
#$`1`
#[1] 2 3 6 4
#$`2`
#[1] 5 3 3 1
v1 <- c(4, 8, 10, 12)
v1N <- c(4, 6, 10, 7)
v2N <- c(8, 6, 6, 2)
vN <- c(v1N, v2N)
另一种情况下,你可以使用length
功能
1:length(unique(v1))
这可能有帮助:
x1 <- c(4, 6, 10, 7)
x2 <- c(8, 6, 6, 2)
m_factors <- matrix(as.numeric(as.factor(rbind(x1,x2))),nrow=2)
y1 <- m_factors[1,]
y2 <- m_factors[2,]
> y1
#[1] 2 3 6 4
> y2
#[1] 5 3 3 1
真的很感谢。我稍微更新了我的问题。你可以看一下吗? –