使用拆分功能拆分数据框后重命名列标题

时间:2013-09-02 15:03:31

标签: r header split lapply

这是一个非常基本的问题,但我正在努力解决它。我有一个主数据框,我根据特定列中的唯一值拆分成多个数据框。这是通过创建数据框列表,然后使用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

dput:

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文件。任何解决方案将不胜感激!

1 个答案:

答案 0 :(得分:2)

简单地使用它:

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

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