将单行转换为行和列

时间:2017-02-04 16:17:52

标签: r

我有170个项目的列表,每个项目有12个变量。该数据目前以连续的一行(2040个变量的1次观察)组织,例如:

0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2

但我想将它组织成170列,每行12行:

0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2

我尝试了以下内容:

list2=lapply(list1, function(x) t(x))

但这并没有以任何方式改变数据。我还能做些什么来改造数据吗?

2 个答案:

答案 0 :(得分:2)

我们将字符串转换为vector数字元素scansplit vector自身list以创建data.frame并将其转换为v2 <- scan(text=v1, what=numeric(), quiet=TRUE) data.frame(split(v2, v2))

@echo off
for /f %%f in ('dir bucle.bat /s/b') do @echo %f  %~tf
pause
exit 

答案 1 :(得分:1)

如果您的数据已经转换为矢量(正如@akrun使用scan显示的那样),您也可以这样做:

data <- 1:2040  # your data
breaks <- seq(1, 2040, 170)
result <- lapply(breaks, function(x) data[x : (x + 169)])

结果

> str(result)
List of 12
 $ : int [1:170] 1 2 3 4 5 6 7 8 9 10 ...
 $ : int [1:170] 171 172 173 174 175 176 177 178 179 180 ...
 $ : int [1:170] 341 342 343 344 345 346 347 348 349 350 ...
 $ : int [1:170] 511 512 513 514 515 516 517 518 519 520 ...
 $ : int [1:170] 681 682 683 684 685 686 687 688 689 690 ...
 $ : int [1:170] 851 852 853 854 855 856 857 858 859 860 ...
 $ : int [1:170] 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 ...
 $ : int [1:170] 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 ...
 $ : int [1:170] 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 ...
 $ : int [1:170] 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 ...
 $ : int [1:170] 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 ...
 $ : int [1:170] 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 ...