0

緯度、経度、および数百のインデックス値 (I) を含むファイルがあります。

head(df2)
       lat      lon I Wp.ID      Date       
1 23.71413 90.67866 3 2867G 14-Jan-13      
2 23.71690 90.66534 3 2374J 12-Dec-12      
3 23.71701 90.66492 3 2377J 12-Dec-12      
4 23.71701 90.66565 4 2373J 12-Dec-12      
5 23.71712 90.66569 4 2372J 12-Dec-12
6 23.71712 90.66462 4 2378J 12-Dec-12 
... ...
... ...  

インデックスに基づいてデータを選択したい場合 (I); たとえば、 I = 4 とすると、次のように記述します。

Idx <- df2[df2$I == 4,]

次に、次のようにエクスポートできます。

write.table(Idx, file = "/Users/Idx4.txt",
          eol = "\n", na = "NA", row.names = FALSE)

100 以上のインデックス値があるため、一度にすべてのファイルを書き込むループを作成したかったのですが、R を使用してそれを行う方法がわかりません。続行するアイデアはありますか??

4

2 に答える 2

0

~100 のインデックス値があり、データが大きすぎない場合は、これを非常に簡単に行うことができます。

fnames <- sort(unique(df2$I))
dfs <- split(df2, df2$I)
lapply(1:length(fnames), function (k) {
         write.table(dfs[[k]],
                     file=paste0("Users/", fnames[[k]], ".txt"),
                     row.names=FALSE)
         })
于 2013-07-16T21:44:26.480 に答える
0

あなたはlapplyそれを達成するために使用できますが、私は好むplyr::l_ply

require(plyr)
save_df <- function(index) {
    write.table(subset(df2, I == index),
                file = file.path("Users", paste0("Idx", index, ".txt")), 
                row.names = FALSE)
}

l_ply(df2$I, save_df)
于 2013-07-16T21:42:26.217 に答える