0

这是一个非常基本的问题,但我正在努力解决它。我有一个主数据框,我根据特定列中的唯一值将其拆分为多个数据框。这是通过创建数据框列表,然后使用 lapply 函数将每个数据框保存为单独的 csv 文件来实现的(请参见下面的代码)。

示例代码:

split_df <- split(df, df$ID) 
u_ID <- unique(df$ID) 
names(split_df) <- paste(u_ID) 
lapply(names(split_df), function(x) write.csv(split_df[x], file= paste0(x, '_ID.csv'))) 

问题是输出 csv 文件中的列标题与主数据框中的列标题不同,即在下面的示例中,数据框按唯一 ID 值拆分,ID 名称已添加到拆分中的每个列标题数据帧。我想在我的输出数据框中得到与我的主日期框相同的列标题。

示例数据:

   ID Count Sp
1   A    23  1
2   A    34  2
3   B     4  2
4   A     4  1
5   C    22  1
6   B    67  1
7   B    51  2
8   A    11  1
9   C    38  1
10  B    59  2

输入:

structure(list(ID = c("A", "A", "B", "A", "C", "B", "B", "A", 
"C", "B"), Count = c(23L, 34L, 4L, 4L, 22L, 67L, 51L, 11L, 38L, 
59L), Sp = c(1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L)), .Names = c("ID", 
"Count", "Sp"), class = "data.frame", row.names = c(NA, -10L))

使用上述代码的示例输出数据帧(csv 文件):

$A
  A.ID A.Count A.Sp
1    A     23  1
2    A     34  2
4    A      4  1
8    A     11  1

$B
   B.ID B.Count B.Sp
3     B      4  2
6     B     67  1
7     B     51  2
10    B     59  2

$C
   C.ID C.Count C.Sp
5     C     22  1
9     C     38  1

对于此示例,我希望得到包含列标题 ID、Count 和 Sp 的输出 csv 文件。任何解决方案将不胜感激!

4

1 回答 1

2

简单地使用这个:

lapply(names(split_df), function(x) write.csv(split_df[[x]], file= paste0(x, '_ID.csv')))

注意 中的双方括号split_df[[x]]

于 2013-09-02T15:08:54.687 回答