【问题标题】:Filling an empty vector with values relative to the first value in the vector用相对于向量中第一个值的值填充空向量
【发布时间】: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 &lt; 3 或 1 + 值,我想填充 second.vector 以便将 NAs 替换为 0 + 其上方行中的值(即第二个向量的第一行中的 1)如果sample.vector &gt; 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 &gt; 3)) + 1
  • 如果值 = 3 会怎样?
  • @bouncyball 这只是一个例子;我拥有的数据使得值要么是 1,0,要么是远远大于 2 或 3
  • @cuttlefish44,您可以将其发布为带有一点解释的答案。
  • @cuttlefish44 as.numeric 调用是不必要的

标签: r vector


【解决方案1】:

cumsum() 返回累计和。比如cumsum(c(3, 7, 1))就是[1] 3 10 11

sample.vector <- c(1,1,0,0,14,1,1,0,1,12)
library(dplyr) # just to explain

(sample.vector > 3) %>% # [1] FALSE FALSE FALSE FALSE TRUE ...
  as.numeric()  %>%     # [1] 0 0 0 0 1 ...  # but this line is unnecessary, thanks @Pierre Lafortune
    cumsum()  %>%       # [1] 0 0 0 0 1 1 1 1 1 2  # do cumulative sums
      + 1               # [1] 1 1 1 1 2 2 2 2 2 3  # what you want

# summarizing the above,
cumsum(sample.vector > 3) + 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多