【发布时间】:2020-05-02 03:34:13
【问题描述】:
我有一个数据框,其中一列包含两个事件之间的时间,以年表示。我想让 R 创建一个新列,其中包含值小于 1 年的观察值,以天数表示。
我尝试使用 lapply 来解决这个问题,但是 lapply 给出了一个矩阵作为一个值,这对我来说并不理想。我想为此使用 for 循环,但我对 for 循环的经验有限。
dataframe <- data.frame(id=c(1,2,3,4,5),
names=c('a','b','c','d','e'),
time_in_years=c(5.81, 0.39, 5.66, 4.18, 0.16),
other_variable=c(3,4,23,0.7,76)
)
我将如何构建一个 for 循环,该循环添加一个包含 0 到 1 乘以 365.25 之间的“time_in_years”值的列?谢谢!
【问题讨论】:
-
你不需要循环,因为操作会被向量化。所以你可以做类似
dataframe$newtime <- with(dataframe, ifelse(time_in_years < 1, time_in_years * 365.25, NA))的事情。 -
为什么只有 0 和 1 之间的年份,您可以使用
time_in_days创建一个新列,例如:dataframe$time_in_days <- dataframe$time_in_years * 365.25 -
@ulfelder 谢谢!这真的很好用,而且是一行简单的代码。
标签: r function dataframe for-loop