Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R数据帧中的延迟_R - Fatal编程技术网

R数据帧中的延迟

R数据帧中的延迟,r,R,我有下面的示例数据集(在下面和/或这里是CSV:),我想如下转换。对于家庭中的每个人,我想创建两个新变量OrigTAZ和DestTAZ。它应该取TripendTAZ中的值并将其放入DestTAZ中。对于OrigTAZ,它应该将上一行的TripendTAZ值放入其中。对于每个家庭成员的第一次旅行(Tripid=1),OrigTAZ=hometaz。对于家庭中的每个人,从第二次旅行开始,OrigTAZ=TripendTAZ_uz(n-1)和DestTAZ=TripendTAZ。示例输入和输出数据如下

我有下面的示例数据集(在下面和/或这里是CSV:),我想如下转换。对于家庭中的每个人,我想创建两个新变量OrigTAZ和DestTAZ。它应该取TripendTAZ中的值并将其放入DestTAZ中。对于OrigTAZ,它应该将上一行的TripendTAZ值放入其中。对于每个家庭成员的第一次旅行(Tripid=1),OrigTAZ=hometaz。对于家庭中的每个人,从第二次旅行开始,OrigTAZ=TripendTAZ_uz(n-1)和DestTAZ=TripendTAZ。示例输入和输出数据如下所示。我尝试了这里的建议:但没有运气。我习惯于在SAS做这样的事情

感谢您的帮助

蒂亚, 克里希南

输入数据

输出数据


只要一步一步地完成你概述的步骤,事情就不会那么糟了

首先,我将通过复制来读取您的数据:

df <- read.csv(file('clipboard'))
df
Houseid,Personid,Tripid,hometaz,TripendTAZ
1,1,1,45,4
1,1,2,45,7
1,1,3,45,87
1,1,4,45,34
1,1,5,45,45
2,1,1,8,96
2,1,2,8,4
2,1,3,8,2
2,1,4,8,1
2,1,5,8,8
2,2,1,8,58
2,2,2,8,67
2,2,3,8,9
2,2,4,8,10
2,2,5,8,8
3,1,1,7,89
3,1,2,7,35
3,1,3,7,32
3,1,4,7,56
3,1,5,7,7
Houseid,Personid,Tripid,hometaz,TripendTAZ,OrigTAZ,DestTAZ
1,1,1,45,4,45,4
1,1,2,45,7,4,7
1,1,3,45,87,7,87
1,1,4,45,34,87,34
1,1,5,45,45,34,45
2,1,1,8,96,8,96
2,1,2,8,4,96,4
2,1,3,8,2,4,2
2,1,4,8,1,2,1
2,1,5,8,8,1,8
2,2,1,8,58,8,58
2,2,2,8,67,58,67
2,2,3,8,9,67,9
2,2,4,8,10,9,10
2,2,5,8,8,10,8
3,1,1,7,89,7,89
3,1,2,7,35,89,35
3,1,3,7,32,35,32
3,1,4,7,56,32,56
3,1,5,7,7,56,7
df <- read.csv(file('clipboard'))
# first sort so that it's ordered by Houseid, then Personid, then Tripid:
df <- with(df, df[order(Houseid,Personid,Tripid),])
# take value in TripendTAZ and put it in DestTAZ
df$DestTAZ <- df$TripendTAZ

# Set OrigTAZ = value from previous row
df$OrigTAZ <- c(NA,df$TripendTAZ[-nrow(df)])

# For the first trip of every person in a household (Tripid = 1),
#  OrigTAZ = hometaz. 
df$OrigTAZ[ df$Tripid==1 ] <- df$hometaz[ df$Tripid==1 ]