R 如何从以前的观察ID中减去值?
我使用的是一个奇怪的数据框架,在这个数据框架中,观测值是无序的,并且每个观测值的唯一标识符不是以线性、直接的方式编号的。数据集中提供了唯一标识符R 如何从以前的观察ID中减去值?,r,dataframe,R,Dataframe,我使用的是一个奇怪的数据框架,在这个数据框架中,观测值是无序的,并且每个观测值的唯一标识符不是以线性、直接的方式编号的。数据集中提供了唯一标识符ObservationID,用于唯一标识观察结果,以及PreviousObsId,用于标识之前的观察结果。我想从任何给定观测值中减去先前观测值。如果数据集出现故障,我该怎么做 所以我想要这个: ObservationID PreviousObsID Value 256A 866D
ObservationID
,用于唯一标识观察结果,以及PreviousObsId
,用于标识之前的观察结果。我想从任何给定观测值中减去先前观测值。如果数据集出现故障,我该怎么做
所以我想要这个:
ObservationID PreviousObsID Value
256A 866D 200
611A 8166Q 415
866D 611A 175
8166Q - 450
为此:
ObservationID PreviousObsID Value ValueLessPrevious
256A 866D 200 25
611A 8166Q 415 -35
866D 611A 175 -240
8166Q - 450
我希望这是有道理的——提前谢谢
数据:
一种方法是创建查找(以命名向量的形式)
mydat 3866D 611A 175-240
#>48166Q-450 NA
一种方法是创建查找(以命名向量的形式)
mydat 3866D 611A 175-240
#>48166Q-450 NA
另一个选项是match
df1$ValueLessPrevious <- with(df1, Value -
Value[match(PreviousObsID, ObservationID)])
df1$ValueLessPrevious
#[1] 25 -35 -240 NA
df1$ValueLessPrevious另一个选项是match
df1$ValueLessPrevious <- with(df1, Value -
Value[match(PreviousObsID, ObservationID)])
df1$ValueLessPrevious
#[1] 25 -35 -240 NA
df1$values之前,通过从先前观测值中减去观测值(先前观测值由先前观测值标识,而不是由观测值的顺序标识)来获得这些值。例如,对于第一次观察(256A),其先前的观察是866D。200(256A的值)-175(866D的值)=25通过从上一个观察值中减去一个观察值(上一个观察值由上一个观察值标识,而不是由观察值的顺序标识)得到这些值。例如,对于第一次观察(256A),其先前的观察是866D。200(256A的值)-175(866D的值)=25Hmm…当我在我的完整数据帧上运行此程序时,每次观察都会得到NA
。我现在意识到,一些观测值有一个“PreviousObsId”,它在数据集中不作为“ObservationID”出现。换句话说,前面提到的观察结果根本不在数据集中。这可能是搞砸查找的原因吗?我对查找不太熟悉,因此为我的无知道歉。另外,Akrun的解决方案有效,因此无需更改您的解决方案。我只是想知道我所描述的是否是阻止代码工作的原因me@rogues77不确定-应该给出相同的结果。嗯……当我在完整的数据帧上运行这个时,每次观察都会得到NA
。我现在意识到,一些观测值有一个“PreviousObsId”,它在数据集中不作为“ObservationID”出现。换句话说,前面提到的观察结果根本不在数据集中。这可能是搞砸查找的原因吗?我对查找不太熟悉,因此为我的无知道歉。另外,Akrun的解决方案有效,因此无需更改您的解决方案。我只是想知道我所描述的是否是阻止代码工作的原因me@rogues77不确定-应给出相同的结果。