【问题标题】:In R: How to create a column such that there is an initial value, and each next value is previous plus a set integer在 R 中:如何创建一个具有初始值的列,并且每个下一个值都是前一个值加上一个集合整数
【发布时间】:2019-01-03 17:11:49
【问题描述】:

如果这是对列出的其他人的重复问题,我深表歉意...我已经查看并尝试了多种想法,但似乎找不到有效的答案。

我在 TFAOS 列表中有一个“预期”列,其中包含多个列。

编辑:数据框是:
患者 预期 TFAOS

预期应该是:

预期
17/24
上一个值 + 17/24
上一个值 + 17/24
等17行

或等价物:

预期
17/24 * 1
17/24 * 2
17/24 * 3
等17行

谁能提供一个简单的解决方案?

我试过了:
TFAOS[1,2]=17/24
TFAOS[2:17, 2] = TFAOS$Expected[-1] + 17/24

变异(TFAOS,预期 = 17/24 + 滞后(预期,默认 =0))

这些都只是为每一行提供相同的 17/24 值。



非常感谢您。

【问题讨论】:

  • 如果您以人们可以将数据作为数据集复制并粘贴到 R 中的格式提供数据,则更容易提供帮助。还有这里的 17/24 是什么?它应该是字符(文本)还是应该是数字?
  • 感谢您的反馈,我将在下面以可重复的格式发布。 17/24 是一个数值 (0.7083333)。

标签: r list reference


【解决方案1】:

你可以试试mutate(Expected = 1:n()*17/4 )

【讨论】:

    【解决方案2】:

    不完全确定我是否在回答您的问题,但此代码将采用一个初始值、一个向量长度和一个步长,并为您提供一个从初始值开始并按步长增加的向量(可能一个整数)在每个连续的元素中。

    out_length <- 10 # length of the vector you want
    increment <- 4 # amount to increment in each step
    initial <- 3 # starting value
    (0:(out_length - 1))*increment + initial # the desired vector
    [1]  3  7 11 15 19 23 27 31 35 39
    

    【讨论】:

    • 非常感谢!这在基本层面上非常有效
    【解决方案3】:

    这是使用数据的另一种方法:

    # package load
    library(tidyverse)
    
    # data
    patients <- c(1:17) 
    Expected <- c(0) 
    TFAOS <- data.frame(patients, Expected)
    
    # constant to add
    myconstant <- 17/24
    
    
    # mutate
    TFAOS <- TFAOS %>%
        mutate(Expected = Expected + (patients - 1) * myconstant)
    
    print(TFAOS)
    

    【讨论】:

    • 也可以完美运行!就像使用 mutate 一样,因为它可以一步完成并且更易于转移。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多