【发布时间】:2016-10-14 20:40:17
【问题描述】:
我有一个向量:
sample.vector
1
1
0
0
14
1
1
0
1
12
我用以下代码创建了第二个向量:
second.vector <- c(1, rep(NA, length(sample.vector)))
这是什么原因造成的:
second.vector
1
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
如果sample.vector < 3 或 1 + 值,我想填充 second.vector 以便将 NAs 替换为 0 + 其上方行中的值(即第二个向量的第一行中的 1)如果sample.vector > 3,则在其上方的行中(即无论该值可能是什么)。
换句话说:
R,我想让你看看
sample.vector中的 row[n]。如果该值小于三,我希望您将second.vector中的 NA 替换为高于该 NA 的值。如果 row[n] 中的值大于 3,我希望你用高于 NA 的值填充second.vector中的 NA,但要加 1。对
sample.vector中的每一行执行此操作,以便将second.vector中的每个NA替换为值。
所以我希望得到的向量是:
second.vector
1
1
1
1
1
2
2
2
2
2
3
我试过了:
second.vector[2:length(second.vector)] <-
ifelse(sample.vector[1:length(sample.vector)] > 3,
second.vector[1:length(second.vector)]+1,
second.vector[1:length(second.vector)]+0)
但它只是给second.vector 的第二行一个 1,而不是填满整个向量。
关于如何做到这一点的任何想法?
【问题讨论】:
-
cumsum(as.numeric(sample.vector > 3)) + 1 -
如果值 = 3 会怎样?
-
@bouncyball 这只是一个例子;我拥有的数据使得值要么是 1,0,要么是远远大于 2 或 3
-
@cuttlefish44,您可以将其发布为带有一点解释的答案。
-
@cuttlefish44
as.numeric调用是不必要的