我正在做的是使用一个交叉变量(交叉)交叉数据集(kol)中的一系列变量,然后将结果导出到csv中。
library(dplyr)
cross <- dataset$crossingvariable
kol <- select(dataset,var.first:var.last)
myfunction <- function(x) {
table1 <- table(cross, x)
table2 <- prop.table(table1, 1)
table3 <- data.frame(table2)
}
dtfr <- lapply(kol,FUN=myfunction)
dtfr2 <- do.call("rbind", dtfr)
write.csv(dtfr2, file="C:/Users/Gebruiker/Documents/statistics/test.csv")
问题是两个dtfr(dtfr和dtfr2)步骤搞乱了格式化。它需要做的是当导出到csv时,dtfr中的每个元素都垂直排列在一起。 dtfr2这样做,但在此过程中它也重新排列表格。因此,在步骤dtfr中,如果我将as.data.frame.matrix包含在table3(如下所示)(how the formatting should be, shown in r console and with as.data.frame.matrix in table3)中,则格式化仍然正确,在步骤dtfr2中它已移动(Incorrect formatting in csv)。然而,需要步骤dtfr2才能在csv文件中将它垂直地放在彼此之下。
当我将table3更改为:
时library(dplyr)
cross <- dataset$crossingvariable
kol <- select(dataset,var.first:var.last)
myfunction <- function(x) {
table1 <- table(cross, x)
table2 <- prop.table(table1, 1)
table3 <- as.data.frame.matrix(table2)
}
dtfr <- lapply(kol,FUN=myfunction)
dtfr2 <- do.call("rbind", dtfr)
write.csv(dtfr2, file="C:/Users/Gebruiker/Documents/statistics/test.csv")
dtfr获得正确的输出(如上所示)。但此时dtfr2在运行脚本时显示以下错误消息:
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
我认为它与我交叉制作的不同变量中的不等数量的列有关。其中大多数是名义或序数变量,因此其中一些有三个类别,其中一些有五个。
我无法找到如何解决这个问题,主要是与我有限的知识有关。我搜索了问题并查看了堆栈溢出,这产生了一些类似的问题,但所有提供的解决方案在我的情况下都不起作用。这与我有很多关系,我还没有真正了解r,但是一些帮助我指向正确方向的人会非常感激。