我想创建一个循环,逐行读取数据帧batch
。您可以看到列batch
值在某个时间后重复(10,1,2,3,4,5,6,7,8,9,1,2,3,4,5 ...... )
现在我应该在批处理完成时保存整行值。例如,批次10在2017-11-01 06:09:00 10 36 2775.430 70.20428 15.79604
完成,我希望将其保存到新的数据帧。批处理1在2017-11-01 06:54:00 1 35 2781.480 70.49287 15.79604
完成,需要保存,批处理2在2017-11-01 08:24:00 2 36 2782.080 69.56226 15.98735
完成,这需要保存..等等。
我有什么建议可以写这个吗?
event_time batch duration size TP YU
1 2017-11-01 05:34:00 10 36 2041.761 68.69974 15.79604
2 2017-11-01 05:39:00 10 36 2230.944 68.69974 15.79604
3 2017-11-01 05:44:00 10 36 2393.590 68.69974 15.79604
4 2017-11-01 05:49:00 10 36 2462.384 59.76005 15.79604
5 2017-11-01 05:54:00 10 36 2462.384 64.85409 15.79604
6 2017-11-01 05:59:00 10 36 2721.387 70.20428 15.79604
7 2017-11-01 06:04:00 10 36 2721.387 70.20428 15.79604
8 2017-11-01 06:09:00 10 36 2775.430 70.20428 15.79604
9 2017-11-01 06:14:00 1 35 103.060 70.20428 0.00000
10 2017-11-01 06:19:00 1 35 2237.591 70.20428 15.79604
11 2017-11-01 06:24:00 1 35 2237.591 70.20428 15.79604
12 2017-11-01 06:29:00 1 35 2399.109 70.20428 15.79604
13 2017-11-01 06:34:00 1 35 2467.942 60.56096 15.79604
14 2017-11-01 06:39:00 1 35 2467.942 65.68742 15.79604
15 2017-11-01 06:44:00 1 35 2726.943 70.49287 15.79604
16 2017-11-01 06:49:00 1 35 2726.943 70.49287 15.79604
17 2017-11-01 06:54:00 1 35 2781.480 70.49287 15.79604
18 2017-11-01 06:59:00 2 36 103.060 70.49287 0.00000
19 2017-11-01 07:04:00 2 36 103.060 70.49287 0.00000
20 2017-11-01 07:09:00 2 36 103.060 70.49287 0.00000
21 2017-11-01 07:14:00 2 36 103.060 70.49287 0.00000
22 2017-11-01 07:19:00 2 36 103.060 70.49287 0.00000
23 2017-11-01 07:24:00 2 36 103.060 70.49287 0.00000
24 2017-11-01 07:29:00 2 36 103.060 70.49287 0.00000
25 2017-11-01 07:34:00 2 36 103.060 70.49287 0.00000
26 2017-11-01 07:39:00 2 36 103.060 70.49287 0.00000
27 2017-11-01 07:44:00 2 36 103.060 70.49287 0.00000
28 2017-11-01 07:49:00 2 36 103.060 70.49287 0.00000
29 2017-11-01 07:54:00 2 36 2236.194 70.49287 15.98735
30 2017-11-01 07:59:00 2 36 2399.229 70.49287 15.98735
31 2017-11-01 08:04:00 2 36 2468.023 55.81712 15.98735
32 2017-11-01 08:09:00 2 36 2468.023 59.34176 15.98735
33 2017-11-01 08:14:00 2 36 2727.026 69.56226 15.98735
34 2017-11-01 08:19:00 2 36 2727.026 69.56226 15.98735
35 2017-11-01 08:24:00 2 36 2782.080 69.56226 15.98735
36 2017-11-01 08:29:00 3 34 103.060 69.56226 0.00000
37 2017-11-01 08:34:00 3 34 103.060 69.56226 0.00000
38 2017-11-01 08:39:00 3 34 2231.033 69.56226 15.89170
39 2017-11-01 08:44:00 3 34 2392.901 69.56226 15.89170
40 2017-11-01 08:49:00 3 34 2461.345 60.88197 15.89170
41 2017-11-01 08:54:00 3 34 2461.345 60.88197 15.89170
42 2017-11-01 08:59:00 3 34 2720.346 70.81388 15.89170
43 2017-11-01 09:04:00 3 34 2720.346 70.81388 15.89170
44 2017-11-01 09:09:00 3 34 2774.288 70.81388 15.89170
45 2017-11-01 09:14:00 4 36 103.060 70.81388 0.00000
46 2017-11-01 09:19:00 4 36 103.060 70.81388 0.00000
47 2017-11-01 09:24:00 4 36 103.060 70.81388 0.00000
48 2017-11-01 09:29:00 4 36 103.060 70.81388 0.00000
49 2017-11-01 09:34:00 4 36 103.060 70.81388 0.00000
50 2017-11-01 09:39:00 4 36 103.060 70.81388 0.00000
51 2017-11-01 09:44:00 4 36 103.060 70.81388 0.00000
52 2017-11-01 09:49:00 4 36 2226.752 70.81388 15.98735
53 2017-11-01 09:54:00 4 36 2455.156 70.81388 15.98735
54 2017-11-01 09:59:00 4 36 2455.156 56.55642 15.98735
55 2017-11-01 10:04:00 4 36 2455.156 56.55642 15.98735
56 2017-11-01 10:09:00 4 36 2455.156 68.57004 15.98735
57 2017-11-01 10:14:00 4 36 2714.158 69.78924 15.98735
58 2017-11-01 10:19:00 4 36 2714.158 69.78924 15.98735
59 2017-11-01 10:24:00 5 37 103.060 69.78924 0.00000
60 2017-11-01 10:29:00 5 37 2227.467 69.78924 15.89170
61 2017-11-01 10:34:00 5 37 2389.723 69.78924 15.89170
62 2017-11-01 10:39:00 5 37 2389.723 69.78924 15.89170
63 2017-11-01 10:44:00 5 37 2457.778 69.78924 15.89170
64 2017-11-01 10:49:00 5 37 2457.778 57.93126 15.89170
65 2017-11-01 10:54:00 5 37 2457.778 66.80934 15.89170
66 2017-11-01 10:59:00 5 37 2716.779 70.52529 15.89170
67 2017-11-01 11:04:00 5 37 2716.779 70.52529 15.89170
68 2017-11-01 11:09:00 6 40 103.060 70.52529 0.00000
69 2017-11-01 11:14:00 6 40 103.060 70.52529 0.00000
70 2017-11-01 11:19:00 6 40 103.060 70.52529 0.00000
71 2017-11-01 11:24:00 6 40 103.060 70.52529 0.00000
72 2017-11-01 11:29:00 6 40 103.060 70.52529 0.00000
73 2017-11-01 11:34:00 6 40 103.060 70.52529 0.00000
74 2017-11-01 11:39:00 6 40 103.060 70.52529 0.00000
75 2017-11-01 11:44:00 6 40 103.060 70.52529 0.00000
76 2017-11-01 11:49:00 6 40 103.060 70.52529 0.00000
77 2017-11-01 11:54:00 6 40 103.060 70.52529 0.00000
78 2017-11-01 11:59:00 6 40 2241.928 70.52529 15.89170
79 2017-11-01 12:04:00 6 40 2241.928 70.52529 15.89170
80 2017-11-01 12:09:00 6 40 2471.500 57.51621 15.89170
81 2017-11-01 12:14:00 6 40 2471.500 59.79248 15.89170
82 2017-11-01 12:19:00 6 40 2730.503 70.46044 15.89170
83 2017-11-01 12:24:00 6 40 2730.503 70.46044 15.89170
84 2017-11-01 12:29:00 6 40 2784.518 70.46044 15.89170
85 2017-11-01 12:34:00 7 32 103.060 70.46044 0.00000
86 2017-11-01 12:39:00 7 32 103.060 70.46044 0.00000
87 2017-11-01 12:44:00 7 32 2228.652 70.46044 15.81226
89 2017-11-01 12:54:00 7 32 2459.002 62.45136 15.81226
90 2017-11-01 12:59:00 7 32 2459.002 66.39105 15.81226
91 2017-11-01 13:04:00 7 32 2718.004 71.96498 15.81226
92 2017-11-01 13:09:00 7 32 2718.004 71.96498 15.81226
93 2017-11-01 13:14:00 7 32 2771.915 71.96498 15.81226
94 2017-11-01 13:19:00 8 33 103.060 71.96498 0.00000
95 2017-11-01 13:24:00 8 33 2237.687 71.96498 15.89170
96 2017-11-01 13:29:00 8 33 2469.166 71.96498 15.89170
97 2017-11-01 13:34:00 8 33 2469.166 62.80156 15.89170
98 2017-11-01 13:39:00 8 33 2469.166 66.29378 15.89170
99 2017-11-01 13:44:00 8 33 2728.167 70.87549 15.89170
100 2017-11-01 13:49:00 8 33 2728.167 70.87549 15.89170
101 2017-11-01 13:54:00 9 34 103.060 70.87549 0.00000
102 2017-11-01 13:59:00 9 34 103.060 70.87549 0.00000
103 2017-11-01 14:04:00 9 34 103.060 70.87549 0.00000
104 2017-11-01 14:09:00 9 34 103.060 70.87549 0.00000
105 2017-11-01 14:14:00 9 34 103.060 70.87549 0.00000
106 2017-11-01 14:19:00 9 34 2045.649 70.87549 15.98735
107 2017-11-01 14:24:00 9 34 2234.832 70.87549 15.98735
108 2017-11-01 14:29:00 9 34 2460.513 60.75227 15.98735
109 2017-11-01 14:34:00 9 34 2460.513 60.75227 15.98735
110 2017-11-01 14:39:00 9 34 2719.514 71.99741 15.98735
111 2017-11-01 14:44:00 9 34 2719.514 72.06226 15.98735
112 2017-11-01 14:49:00 9 34 2719.514 72.06226 15.98735
113 2017-11-01 14:54:00 1 32 103.060 72.06226 0.00000
114 2017-11-01 14:59:00 1 32 103.060 72.06226 0.00000
115 2017-11-01 15:04:00 1 32 2232.300 72.06226 15.79604
116 2017-11-01 15:09:00 1 32 2459.926 64.69196 15.79604
117 2017-11-01 15:14:00 1 32 2459.926 64.69196 15.79604
118 2017-11-01 15:19:00 1 32 2718.928 72.06226 15.79604
119 2017-11-01 15:24:00 1 32 2718.928 72.63943 15.79604
120 2017-11-01 15:29:00 1 32 2718.928 72.63943 15.79604
121 2017-11-01 15:34:00 2 32 103.060 72.63943 0.00000
122 2017-11-01 15:39:00 2 32 103.060 72.63943 0.00000
123 2017-11-01 15:44:00 2 32 2233.733 72.63943 15.79604
124 2017-11-01 15:49:00 2 32 2462.099 64.50065 15.79604
125 2017-11-01 15:54:00 2 32 2462.099 64.53307 15.79604
126 2017-11-01 15:59:00 2 32 2721.101 71.93580 15.79604
127 2017-11-01 16:04:00 2 32 2721.101 72.67185 15.79604
128 2017-11-01 16:09:00 2 32 2721.101 72.67185 15.79604
129 2017-11-01 16:14:00 3 33 103.060 72.67185 0.00000
130 2017-11-01 16:19:00 3 33 103.060 72.67185 0.00000
131 2017-11-01 16:24:00 3 33 103.060 72.67185 0.00000
132 2017-11-01 16:29:00 3 33 103.060 72.67185 0.00000
133 2017-11-01 16:34:00 3 33 2233.003 72.67185 15.98735
134 2017-11-01 16:39:00 3 33 2394.871 72.67185 15.98735
135 2017-11-01 16:44:00 3 33 2462.536 62.22763 15.98735
136 2017-11-01 16:49:00 3 33 2462.536 68.21660 15.98735
137 2017-11-01 16:54:00 3 33 2721.537 72.22438 15.98735
138 2017-11-01 16:59:00 3 33 2721.537 72.22438 15.98735
139 2017-11-01 17:04:00 3 33 2775.676 72.22438 15.98735
140 2017-11-01 17:09:00 4 33 2232.340 72.22438 15.60311
141 2017-11-01 17:14:00 4 33 2392.301 72.22438 15.60311
142 2017-11-01 17:19:00 4 33 2460.356 65.71984 15.60311
143 2017-11-01 17:24:00 4 33 2460.356 66.03761 15.60311
144 2017-11-01 17:29:00 4 33 2719.357 73.50519 15.60311
145 2017-11-01 17:34:00 4 33 2719.357 73.50519 15.60311
146 2017-11-01 17:39:00 4 33 2719.357 73.50519 15.60311
147 2017-11-01 17:44:00 5 36 103.060 73.50519 0.00000
148 2017-11-01 17:49:00 5 36 1909.972 73.50519 15.79604
149 2017-11-01 17:54:00 5 36 2239.077 73.50519 15.79604
150 2017-11-01 17:59:00 5 36 2471.684 65.07782 15.79604
151 2017-11-01 18:04:00 5 36 2471.684 65.07782 15.79604
152 2017-11-01 18:09:00 5 36 2730.686 72.63943 15.79604
153 2017-11-01 18:14:00 5 36 2730.686 73.34306 15.79604
154 2017-11-01 18:19:00 5 36 2730.686 73.34306 15.79604
155 2017-11-01 18:24:00 5 36 2785.718 73.34306 15.79604
156 2017-11-01 18:29:00 6 38 103.060 73.34306 0.00000
157 2017-11-01 18:34:00 6 38 103.060 73.34306 0.00000
158 2017-11-01 18:39:00 6 38 103.060 73.34306 0.00000
159 2017-11-01 18:44:00 6 38 103.060 73.34306 0.00000
160 2017-11-01 18:49:00 6 38 103.060 73.34306 0.00000
161 2017-11-01 18:54:00 6 38 103.060 73.34306 0.00000
162 2017-11-01 18:59:00 6 38 2222.261 73.34306 16.10084
163 2017-11-01 19:04:00 6 38 2453.739 73.34306 16.10084
164 2017-11-01 19:09:00 6 38 2453.739 60.94358 16.10084
165 2017-11-01 19:14:00 6 38 2453.739 70.04539 16.10084
166 2017-11-01 19:19:00 6 38 2712.741 72.63943 16.10084
167 2017-11-01 19:24:00 6 38 2712.741 72.63943 16.10084
答案 0 :(得分:0)
我认为您仍需要澄清一点,但不需要for
循环:
xdf <- read.table("so.dat", header = TRUE, stringsAsFactors = FALSE)
xdf[cumsum(rle(xdf$batch)$lengths),]
## event_time batch duration size TP YU
## 8 2017-11-01 06:09:00 10 36 2775.430 70.20428 15.79604
## 17 2017-11-01 06:54:00 1 35 2781.480 70.49287 15.79604
## 35 2017-11-01 08:24:00 2 36 2782.080 69.56226 15.98735
## 44 2017-11-01 09:09:00 3 34 2774.288 70.81388 15.89170
## 58 2017-11-01 10:19:00 4 36 2714.158 69.78924 15.98735
## 67 2017-11-01 11:04:00 5 37 2716.779 70.52529 15.89170
## 84 2017-11-01 12:29:00 6 40 2784.518 70.46044 15.89170
## 92 2017-11-01 13:14:00 7 32 2771.915 71.96498 15.81226
## 99 2017-11-01 13:49:00 8 33 2728.167 70.87549 15.89170
## 111 2017-11-01 14:49:00 9 34 2719.514 72.06226 15.98735
## 119 2017-11-01 15:29:00 1 32 2718.928 72.63943 15.79604
## 127 2017-11-01 16:09:00 2 32 2721.101 72.67185 15.79604
## 138 2017-11-01 17:04:00 3 33 2775.676 72.22438 15.98735
## 145 2017-11-01 17:39:00 4 33 2719.357 73.50519 15.60311
## 154 2017-11-01 18:24:00 5 36 2785.718 73.34306 15.79604
## 166 2017-11-01 19:24:00 6 38 2712.741 72.63943 16.10084
答案 1 :(得分:0)
另一种方法是使用dplyr
包:
library(dplyr)
# df is the data.frame you provided
new.df <- df %>% mutate(..change = batch != lag(batch)) %>% filter(lead(..change))