【发布时间】:2016-10-03 09:50:38
【问题描述】:
我有一个看起来像这个 sx16 数据框的数据框:
如果链接失效:
数据框叫做sx16
它有列名: 日期、开盘价、最高价、最低价、结算
我想添加一个名为 up_period 的列,如果下面的 calc 为正,则打印 1,如果下面的 calc 为负,则打印 0:
sx16$Settle[ 1: nrow(sx16)] - sx16$Settle[ 2: nrow(sx16)]
当然,这会产生错误,因为新列表比原来的 sx16 短。
我尝试像这样将 rbind.fill 包裹起来:
sx16$up_period <- rbind.fill(sx16$Settle[ 1: nrow(sx16)] - sx16$Settle[ 2: nrow(sx16)])
但这会产生以下错误:
警告信息: 在 sx16$Settle[1:nrow(sx16)] - sx16$Settle[2:nrow(sx16)] : 较长的对象长度不是较短对象长度的倍数
当然,这正是我认为 rbind.fill 可以解决的问题。这是我卡住的地方。一旦我得到这个,我可以添加一个简单的 if-else 来执行 1 和 0,但我不知道如何将这个较短的列添加到我的数据框中。
【问题讨论】:
-
使用示例数据: iris$Sepal.Length[1:(nrow(iris)-1)]-iris$Sepal.Length[2:nrow(iris)] 将处理除最后一个以外的所有值一个
-
@OliPaul 他们将如何将其绑定到数据框?它少了一排。而且所有迹象都相反(尝试
iris$Sepal.Length - c(NA, iris$Sepal.Length[1:nrow(iris) - 1])) -
你不是说
iris$Sepal.Length - c(iris$Sepal.Length[2:nrow(iris)], NA)
标签: r