Call、Rbind dataframe-添加列名和从长到宽的数据

Call、Rbind dataframe-添加列名和从长到宽的数据,r,R,我正在分析200个csv文件中的数据。我已经在R中导入了这些文件,并创建了两个不同的函数,这样的结果就是每个文件的函数结果(count和sum by color)。函数结果以数据帧的形式出现。 对于最终的结果,我使用do.call(rbind,result)的组合,它生成如下输出:因为我使用rbind,所以第一列没有标题 Count Sum File1.Blue 5 10 File1.Red 2 6 File2.Blue 1 3 File2.Red 1

我正在分析200个csv文件中的数据。我已经在R中导入了这些文件,并创建了两个不同的函数,这样的结果就是每个文件的函数结果(count和sum by color)。函数结果以数据帧的形式出现。
对于最终的结果,我使用do.call(rbind,result)的组合,它生成如下输出:因为我使用rbind,所以第一列没有标题

          Count Sum
File1.Blue  5   10
File1.Red   2   6
File2.Blue  1   3
File2.Red   1   1
File3.Blue  4
File3.Red   7   2   
名单很长。我想转换结果,使最终结果如下所示:

       Blue Count Blue Sum  Red Count   Red Sum
File 1      5       10      2       6
File 2      1       3       1       1
File 3      4       0       7       2

我想我需要使用重塑或强制转换功能…但我不确定如何首先分割文件名,然后排列数据

我们可以使用
dcast
from
data.table
。通过拆分原始数据集的行名称,在原始数据集中创建两个新列(或通过
cbind
ing将新列与原始数据集绑定,作为新数据集)。然后,将“data.frame”转换为“data.table”(
setDT(df2)
),并使用
dcast
,它可以接受多个
value.var

library(data.table)
 df2 <- cbind(read.table(text=row.names(df1), sep=".",
  header=FALSE, stringsAsFactors=FALSE), `row.names<-`(df1[,1:2], NULL))
dcast(setDT(df2), V1~V2, value.var= c("Count", "Sum"))
#       V1 Count_Blue Count_Red Sum_Blue Sum_Red
#1: File1          5         2       10       6
#2: File2          1         1        3       1
#3: File3          4         7       NA       2
库(data.table)

df2您需要正确设置问题的格式。现在看不懂了,这行得通!非常感谢。你能帮我理解cbind函数中发生了什么吗。text=row.names(df1)如何知道只拆分第一列?第二个命令--
row.names
 df1 <- structure(list(Count = c(5L, 2L, 1L, 1L, 4L, 7L), Sum = c(10L,  
 6L, 3L, 1L, NA, 2L)), .Names = c("Count", "Sum"), class = "data.frame", 
 row.names = c("File1.Blue", 
 "File1.Red", "File2.Blue", "File2.Red", "File3.Blue", "File3.Red"))