【问题标题】:How to add a new column to data-frame that depends on values from another column?如何将新列添加到依赖于另一列值的数据框?
【发布时间】:2019-02-25 16:15:46
【问题描述】:

假设我必须关注数据框(称为 myData):

X
1
2
3
4

现在我想添加另一列 Y(x),如下所示

X   Y
1   max(0, min(a*x+rnorm(1, 183, 10), 4) 
2   max(0, min(a*x+rnorm(1, 183, 10), 4) 
3   max(0, min(a*x+rnorm(1, 183, 10), 4)
4   max(0, min(a*x+rnorm(1, 183, 10), 4)

其中小 x 是该特定行的 x 值,“a”只是一个常数。其中 4 是 nrow(myData)。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以这样做:

    # Base R 
    dat <- data.frame("X" = 1:4)           
    dat$Y = pmax(0, pmin(1*dat$X+rnorm(n=4, 183, 10), n=nrow(dat)))
    

    编辑: 根据下面的 cmets,我对其进行了调整以使用适当的功能,并允许它对 DF 中的行数进行动态调整。

    【讨论】:

    • 这是错误的,我打算发布一个类似但正确的结果。您应该将minmax 替换为pminpmax。您还应该将n=4 替换为n=nrow(dat),以使其适用于任何大小的数据集。
    • 这没有错,只是和 OP 要求使用的不同。
    • 我猜每行都会绘制一个随机数并与 0 和 4 进行比较。按照您的设计,Y 列将包含每一行的相同值。
    • 进行了更改,tibble() 不喜欢我引用 nrow(X)
    • 您将nrow(dat) 作为参数pmax 输入,但在问题中4min 的参数,而不是max。这意味着现在max 有一个额外的参数,而pmin 根本没有做任何事情,因为只有一个参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多