我有以下示例数据:
library(prodlim)
NUM <- 100
dat1 <- SimSurv(NUM)
dat1$time <- sample(24:160,NUM,rep=TRUE)
dat1$X3 <- sample(0:1,NUM,rep=TRUE)
dat1$X4 <- sample(0:9,NUM,rep=TRUE)
dat1$X5 <- sample(c("a","b","c"),NUM,rep=TRUE)
dat1$X6 <- sample(c("was","que","koa","sim","sol"),NUM,rep=TRUE)
dat1$X7 <- sample(1:99,NUM,rep=TRUE)
dat1$X8 <- sample(1:200,NUM,rep=TRUE)
attach(dat1)
我找到了一个简洁的代码行,它提供了一个简单summary(dataset)
在“Loop through a .csv file in R, computing relative frequencies?”问题中无法执行的所有必要频率:
freq <- apply(X = dat1, MARGIN = 2, FUN = function(x) {summary(factor(x))})
我的问题是如何提取每个变量频率,以便我可以在一个命令中将它们保存在CSV文件中?
命令freq[1:1]
到freq[n:n]
完成工作,但编辑每个打印加上控制台中的输出需要进一步的文本编辑是很繁琐的。
答案 0 :(得分:1)
在@user20650的帮助下,我设法解决了我的问题。
freq <- apply(X = dat1, MARGIN = 2,
FUN = function(x) {
summary(factor(x), , maxsum=Inf))
# maxsum=Inf will prevent truncation of value frequencies
})
sapply(seq(freq),
function(z) write.csv(
freq[z],
paste0("path/to/folder/",names(freq[z]),".csv")
)
)
summary(list)
is awesome, but I want more than summary”的maxsum=Inf
可防止截断摘要值频率。sapply()
c / o @user20650将每个频率保存到一个单独的CSV文件中,变量名称为文件名。