【发布时间】:2018-06-15 00:16:12
【问题描述】:
我正在尝试在我的 r 数据框中添加一列,根据直径计算干重(在多个日期测量多个生长物体的直径)。直径和干重之间的关系随着时间的推移而变化,这就是为什么我在不同的日期使用不同的公式。
object<-c(1,1,1,2,2,2)
date<-c(7,8,9,7,8,9)
diam<-c(2,3,4,1,3,5)
df<-data.frame(object,date,diam)
object date diam
1 1 7 2
2 1 8 3
3 1 9 4
4 2 7 1
5 2 8 3
6 2 9 5
假设我想对日期 7 和 8 使用公式 y=5x+17,对日期 9 使用公式 y=3x+16。 我试过这个:
df$dw<-5*dw$diam-17[df$diam<=8]
但它告诉我替换和数据中有不同数量的行,这当然是正确的。如果我可以告诉它只将 NA 放在 df$diam>8 的位置,那就没问题了,但我不知道该怎么做。我曾尝试使用子集函数,但也没有任何运气。我唯一能想到的就是制作一大堆单独的数据框 - 每个公式一个,但这是一个不优雅(且复杂)的解决方案!
# desired outcome
df$dw
[1] 27 32 28 22 32 31
谢谢大家!
【问题讨论】:
-
每个日期的测量次数是否相同?
-
是的。我在每个日期测量了每个对象。
-
最简单的方法(取决于你需要计算多少个日期以及你想对结果做什么)可能是为每个日期创建列,然后应用然后你可以应用相关公式到相关列。我会在一分钟内完成一些代码。
标签: r subset calculation