我有一个大的数据集(但下面是一个小的例子)。我可以拆分dataframe,然后我想输出到多个文本文件对应的lavel用于分裂。
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
现在分开
> 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
我想把.table写为outputc
、outputk
和outputl
。因此,输出是通用前缀,后跟分组变量的标签名称。
write.table (spt1)
3条答案
按热度按时间lsmepo6l1#
在spt1的名称上使用lapply将允许我们访问spt1中的 Dataframe 以及可以在paste中使用的名称来创建文件。
如果需要,可以在粘贴中添加通用扩展名。
k0pti3hp2#
您还可以使用非常快速的
data.table
解决方案。在这种情况下,不需要将dataframe
拆分为list
。如果你想在输出中保留
var1
,你可以这样做:ps.注意这个答案使用的是
fwrite
,它仍然在data.table
的开发版本中。Go here for install instructions。您可以简单地使用write.csv
或write.table
,但是您可能需要一个快速的解决方案,以防您正在处理一个大数据集,而fwrite
肯定是one of the fastest alternatives。kadbb4593#
Joseph Flanagan使用tidyverse和
group_walk
提供了一个very elegant answer: