Объединить более длинный вектор с фреймом данных путем чередования в R - PullRequest
0 голосов
/ 16 марта 2020

У меня есть фрейм данных x со временем начала и смещения, которое я пытаюсь расширить до односекундных «эпох», считая в обратном направлении со времени второго начала. По сути, я хочу создавать начальные значения для каждой секунды и копировать информацию из других столбцов рядом с ней.

> x
   Onset_Time Offset_Time qualifying not_dyadic_engagement dyadic_engagement              child_engagement
1    1794.760    1799.298              separate engagement                                    narrating(c)
2    1799.298    1810.809       none   parallel engagement                                                
3    1810.809    1819.318              separate engagement                                    narrating(c)
4    1819.318    1838.103       none   parallel engagement                                                
5    1838.103    1844.576              separate engagement                            object engagement(c)
6    1844.576    1854.886       none   parallel engagement                                                
7    1854.886    1859.558              separate engagement                   attempted joint engagement(c)
8    1859.558    1861.760              separate engagement                            object engagement(c)
9    1861.760    1863.829       none   parallel engagement                                                
10   1863.829    1873.572              separate engagement                            object engagement(c)
11   1873.572    1876.208       none   parallel engagement                                                
12   1876.208    1881.980              separate engagement                            object engagement(c)
13   1881.980    1884.015       none   parallel engagement                                                
14   1884.015    1893.625              separate engagement                                    unengaged(c)
15   1893.625    1901.400              separate engagement                            object engagement(c)
16   1901.400    1908.974  narration   parallel engagement                                                
17   1908.974    1924.856              separate engagement                            object engagement(c)
18   1924.856    1928.093       none   parallel engagement                                                
19   1928.093    1943.375              separate engagement                            object engagement(c)
20   1943.375    1945.744       none   parallel engagement                                                
21   1945.744    1953.718              separate engagement                            object engagement(c)
22   1953.718    1996.595       none   parallel engagement                                                
23   1996.595    2004.169              separate engagement                            object engagement(c)
24   2004.169    2007.105       none   parallel engagement                                                
25   2007.105    2012.544              separate engagement                            object engagement(c)
26   2012.544    2015.580       none   parallel engagement                                                
27   2015.580    2019.451              separate engagement                   attempted joint engagement(c)
28   2019.451    2021.553       none   parallel engagement                                                
29   2021.553    2028.593              separate engagement                            object engagement(c)
30   2028.593    2050.515       none   parallel engagement                                                
31   2050.482    2053.952              separate engagement                                    narrating(c)
32   2053.952    2115.046       none   parallel engagement                                                
33   2115.046    2117.916              separate engagement                            object engagement(c)
34   2117.916    2120.118              separate engagement                            object engagement(c)
35   2120.118    2167.799       none   parallel engagement                                                
36   2167.799    2169.934                                  person engagement                              
37   2169.934    2179.244       none   parallel engagement       

У меня есть код для генерации значений времени, и я поместил его ниже:

z <- data.frame()
for(i in 1:nrow(x)){
  for(j in 1:floor(x$Offset_Time[i] - x$Onset_Time[i])){
      z[i,j] <- x$Onset_Time[i+1] - j
  }
}
z <- t(z)

z <- t(z)

xx <- vector("numeric")
for(i in 1:ncol(z)){
  x1 <- z[,i]
  xx <- c(x1, xx)
}
xxx <- xx[!is.na(xx)]
xxx <- data.frame(unname(sort(xxx, decreasing = F)))

Результирующий вывод - это неназванный вектор, который выглядит следующим образом:

1                            1795.298
2                            1796.298
3                            1797.298
4                            1798.298
5                            1799.809
6                            1800.809
7                            1801.809
8                            1802.809
9                            1803.809
10                           1804.809
11                           1805.809
12                           1806.809
13                           1807.809
14                           1808.809
15                           1809.809
16                           1811.318
17                           1812.318
18                           1813.318
19                           1814.318
20                           1815.318
21                           1816.318
22                           1817.318
23                           1818.318
24                           1820.103
25                           1821.103
26                           1822.103
27                           1823.103
28                           1824.103
29                           1825.103
30                           1826.103
31                           1827.103
32                           1828.103
33                           1829.103
34                           1830.103
35                           1831.103
36                           1832.103
37                           1833.103
38                           1834.103
39                           1835.103
40                           1836.103
41                           1837.103
42                           1838.576
43                           1839.576
44                           1840.576
45                           1841.576
46                           1842.576
47                           1843.576
48                           1844.886
49                           1845.886
50                           1846.886
51                           1847.886
52                           1848.886
53                           1849.886
54                           1850.886
55                           1851.886
56                           1852.886
57                           1853.886
58                           1855.558
59                           1856.558
60                           1857.558
61                           1858.558
62                           1859.760
63                           1860.760
64                           1861.829
65                           1862.829
66                           1864.572
67                           1865.572
68                           1866.572
69                           1867.572
70                           1868.572
71                           1869.572
72                           1870.572
73                           1871.572
74                           1872.572
75                           1874.208
76                           1875.208
77                           1876.980
78                           1877.980
79                           1878.980
80                           1879.980
81                           1880.980
82                           1882.015
83                           1883.015
84                           1884.625
85                           1885.625
86                           1886.625
87                           1887.625
88                           1888.625
89                           1889.625
90                           1890.625
91                           1891.625
92                           1892.625
93                           1894.400
94                           1895.400
95                           1896.400
96                           1897.400
97                           1898.400
98                           1899.400
99                           1900.400
100                          1901.974
101                          1902.974
102                          1903.974
103                          1904.974
104                          1905.974
105                          1906.974
106                          1907.974
107                          1909.856
108                          1910.856
109                          1911.856
110                          1912.856
111                          1913.856
112                          1914.856
113                          1915.856
114                          1916.856
115                          1917.856
116                          1918.856
117                          1919.856
118                          1920.856
119                          1921.856
120                          1922.856
121                          1923.856
122                          1925.093
123                          1926.093
124                          1927.093
125                          1928.375
126                          1929.375
127                          1930.375
128                          1931.375
129                          1932.375
130                          1933.375
131                          1934.375
132                          1935.375
133                          1936.375
134                          1937.375
135                          1938.375
136                          1939.375
137                          1940.375
138                          1941.375
139                          1942.375
140                          1943.744
141                          1944.744
142                          1946.718
143                          1947.718
144                          1948.718
145                          1949.718
146                          1950.718
147                          1951.718
148                          1952.718
149                          1954.595
150                          1955.595
151                          1956.595
152                          1957.595
153                          1958.595
154                          1959.595
155                          1960.595
156                          1961.595
157                          1962.595
158                          1963.595
159                          1964.595
160                          1965.595
161                          1966.595
162                          1967.595
163                          1968.595
164                          1969.595
165                          1970.595
166                          1971.595
167                          1972.595
168                          1973.595
169                          1974.595
170                          1975.595
171                          1976.595
172                          1977.595
173                          1978.595
174                          1979.595
175                          1980.595
176                          1981.595
177                          1982.595
178                          1983.595
179                          1984.595
180                          1985.595
181                          1986.595
182                          1987.595
183                          1988.595
184                          1989.595
185                          1990.595
186                          1991.595
187                          1992.595
188                          1993.595
189                          1994.595
190                          1995.595
191                          1997.169
192                          1998.169
193                          1999.169
194                          2000.169
195                          2001.169
196                          2002.169
197                          2003.169
198                          2005.105
199                          2006.105
200                          2007.544
201                          2008.544
202                          2009.544
203                          2010.544
204                          2011.544
205                          2012.580
206                          2013.580
207                          2014.580
208                          2016.451
209                          2017.451
210                          2018.451
211                          2019.553
212                          2020.553
213                          2021.593
214                          2022.593
215                          2023.593
216                          2024.593
217                          2025.593
218                          2026.593
219                          2027.593
220                          2029.482
221                          2030.482
222                          2031.482
223                          2032.482
224                          2033.482
225                          2034.482
226                          2035.482
227                          2036.482
228                          2037.482
229                          2038.482
230                          2039.482
231                          2040.482
232                          2041.482
233                          2042.482
234                          2043.482
235                          2044.482
236                          2045.482
237                          2046.482
238                          2047.482
239                          2048.482
240                          2049.482
241                          2050.952
242                          2051.952
243                          2052.952
244                          2054.046
245                          2055.046
246                          2056.046
247                          2057.046
248                          2058.046
249                          2059.046
250                          2060.046
251                          2061.046
252                          2062.046
253                          2063.046
254                          2064.046
255                          2065.046
256                          2066.046
257                          2067.046
258                          2068.046
259                          2069.046
260                          2070.046
261                          2071.046
262                          2072.046
263                          2073.046
264                          2074.046
265                          2075.046
266                          2076.046
267                          2077.046
268                          2078.046
269                          2079.046
270                          2080.046
271                          2081.046
272                          2082.046
273                          2083.046
274                          2084.046
275                          2085.046
276                          2086.046
277                          2087.046
278                          2088.046
279                          2089.046
280                          2090.046
281                          2091.046
282                          2092.046
283                          2093.046
284                          2094.046
285                          2095.046
286                          2096.046
287                          2097.046
288                          2098.046
289                          2099.046
290                          2100.046
291                          2101.046
292                          2102.046
293                          2103.046
294                          2104.046
295                          2105.046
296                          2106.046
297                          2107.046
298                          2108.046
299                          2109.046
300                          2110.046
301                          2111.046
302                          2112.046
303                          2113.046
304                          2114.046
305                          2115.916
306                          2116.916
307                          2118.118
308                          2119.118
309                          2120.799
310                          2121.799
311                          2122.799
312                          2123.799
313                          2124.799
314                          2125.799
315                          2126.799
316                          2127.799
317                          2128.799
318                          2129.799
319                          2130.799
320                          2131.799
321                          2132.799
322                          2133.799
323                          2134.799
324                          2135.799
325                          2136.799
326                          2137.799
327                          2138.799
328                          2139.799
329                          2140.799
330                          2141.799
331                          2142.799
332                          2143.799
333                          2144.799
334                          2145.799
335                          2146.799
336                          2147.799
337                          2148.799
338                          2149.799
339                          2150.799
340                          2151.799
341                          2152.799
342                          2153.799
343                          2154.799
344                          2155.799
345                          2156.799
346                          2157.799
347                          2158.799
348                          2159.799
349                          2160.799
350                          2161.799
351                          2162.799
352                          2163.799
353                          2164.799
354                          2165.799
355                          2166.799
356                          2167.934
357                          2168.934

Это не самый чистый код, но он дает мне вектор значений, который я хотел бы объединить с моими исходными данными кадр x, со значениями вектора, чередующимися со временем начала, и копированием информации из нескольких факторов (например, child_engagement, non_dyadic_engagement). У кого-нибудь есть рекомендации для этого? Я также хотел бы получить отзыв о создании циклов для более чистого извлечения значений.

...