虽然我认为我很快就会成为R大师,但我最近的问题集是一个粗鲁的觉醒大声笑。在发布此问题之前,我已经搜索了这个社区并练习了各种教程。最后,我需要通过一个CSV文件目录并创建一个最终数据框,显示每个特定文件的完整案例数。因此,如果我想在目录中搜索文件[1:3],将显示一个数据框,显示每个特定文件1 - X,2 - Y,3 - Z的完整个案数。当我运行此代码时:< / p>
complete <- function(directory, id = 1:332) {
files_list <- list.files(directory, full.names=TRUE)
for(file in id){
data <- data.frame()
data <- rbind(data, read.csv(files_list[file], header=TRUE))
nobs <- sum(complete.cases(data))
}
allnobs <- data.frame(id, nobs)
allnobs
}
我收到一个data.frame,其中列出了每行ID中最终CSV文件的complete.cases数,而192应该只与ID 8配对,而其他每个ID都应该有自己唯一的完整案例数。我的结果为每个ID列出192:
> complete("specdata", 1:8)
id nobs
1 1 192
2 2 192
3 3 192
4 4 192
5 5 192
6 6 192
7 7 192
8 8 192
我还尝试移动在for循环之外创建的原始data.frame:
complete <- function(directory, id = 1:332) {
files_list <- list.files(directory, full.names=TRUE)
data <- data.frame()
for(file in id){
data <- rbind(data, read.csv(files_list[file], header=TRUE))
nobs <- sum(complete.cases(data))
}
allnobs <- data.frame(id, nobs)
allnobs
}
- 这最终给了我在所有文件中观察到的total.cases总数:
> complete("specdata", 1:8)
id nobs
1 1 3139
2 2 3139
3 3 3139
4 4 3139
5 5 3139
6 6 3139
7 7 3139
8 8 3139
非常感谢此处的任何帮助。
答案 0 :(得分:0)
在这里:## dir是你的目录
complete<-function(dir,id)
{
setwd("D:/R WD/assignment1")
file_list <- list.files(dir, full.names = FALSE)
setwd("D:/R WD/assignment1/specdata")
nobs<-integer(length(id))
p<- 1
for(i in id)
{
data <- read.csv(file_list[i], header=TRUE)
n<-sum(complete.cases(data))
nobs[p]<-n
p<-p+1
}
cbind(id,nobs)
}
输出:
> complete("specdata", 1:8)
id nobs
[1,] 1 117
[2,] 2 1041
[3,] 3 243
[4,] 4 474
[5,] 5 402
[6,] 6 228
[7,] 7 442
[8,] 8 192
- 问候DUDU