Call、Rbind dataframe-添加列名和从长到宽的数据
我正在分析200个csv文件中的数据。我已经在R中导入了这些文件,并创建了两个不同的函数,这样的结果就是每个文件的函数结果(count和sum by color)。函数结果以数据帧的形式出现。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
对于最终的结果,我使用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
fromdata.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"))