Mam duży zbiór danych (ale na przykład mały). Mogę podzielić ramkę danych, a następnie chcę wypisać na wiele plików tekstowych odpowiadających podziałowi używanemu do podziału.Podział ramek danych na wiele plików wyjściowych
mydata <- data.frame (var1 = rep(c("k", "l", "c"), each = 5), var2 = rnorm(5),
var3 = rnorm(5))
mydata
var1 var2 var3
1 k 0.5406022 0.3654706
2 k -0.6356879 -0.9160001
3 k 0.2946240 -0.1072241
4 k -0.2609121 0.1036626
5 k 0.6206579 0.6111655
6 l 0.5406022 0.3654706
7 l -0.6356879 -0.9160001
8 l 0.2946240 -0.1072241
9 l -0.2609121 0.1036626
10 l 0.6206579 0.6111655
11 c 0.5406022 0.3654706
12 c -0.6356879 -0.9160001
13 c 0.2946240 -0.1072241
14 c -0.2609121 0.1036626
15 c 0.6206579 0.6111655
Teraz podzielić
> spt1 <- split(mydata, mydata$var1)
> spt1
$c
var1 var2 var3
11 c 0.5406022 0.3654706
12 c -0.6356879 -0.9160001
13 c 0.2946240 -0.1072241
14 c -0.2609121 0.1036626
15 c 0.6206579 0.6111655
$k
var1 var2 var3
1 k 0.5406022 0.3654706
2 k -0.6356879 -0.9160001
3 k 0.2946240 -0.1072241
4 k -0.2609121 0.1036626
5 k 0.6206579 0.6111655
$l
var1 var2 var3
6 l 0.5406022 0.3654706
7 l -0.6356879 -0.9160001
8 l 0.2946240 -0.1072241
9 l -0.2609121 0.1036626
10 l 0.6206579 0.6111655
Chcę write.table w imieniu outputc
, outputk
i outputl
. Zatem wyjście jest wspólnym przedrostkiem, po którym następuje nazwa etykiety dla zmiennej grupującej.
write.table (spt1)
Być może warto również zauważyć: OP chce zachować 'var1' na wyjściu, ale' .SD' go nie zawiera. Możesz spróbować 'c (.BY, .SD)' (nie wiem, czy to działa) lub użyć nowej metody 'split.data.table' (obecnie w wersji devel https://github.com/Rdatatable/data. tabela/numery/1389) – Frank