
[英]How do I count the number of rows I have summed values in 1 column based on matching values in 3 other columns [R]?
[英]How do I not have R overwrite the other values
这是我的功能
complete <- function(directory, id = 1:332) {
files_list <- list.files(directory, full.names = TRUE)
nobs <- numeric()
for (i in id) {
nob <- sum(complete.cases(read.csv(files_list[i])))
}
nobs <- c(nobs, nob)
dat <- return(data.frame(id, nobs))
}
complete(specdata, 1)
complete(specdata, c(2, 4, 8, 10, 12))
这返回
> complete(specdata, 1)
id nobs
1 1 117
> complete(specdata, c(2, 4, 8, 10, 12))
id nobs
1 2 96
2 4 96
3 8 96
4 10 96
5 12 96
虽然我得到了正确的单个值,但不同的 id 应该有不同的结束值,目前,所有值都被最终值覆盖。
如何让它不这样做?
谢谢大家,我最终找到了另一种方法。
complete <- function(directory, id = 1:332){
files_list <- list.files(directory, full.names = T) # creates a list of files.
dat <- data.frame() #creates an empty data frame
nobs <- numeric()
for (i in id) {
dat <- read.csv(files_list[i])
nobs <- c(nobs, sum(complete.cases(dat)))
}
return(data.frame(id, nobs))
}
@StupidWolf 的建议应该可以解决您的问题,但这是另一种方法:
complete <- function(directory, id = 1:332) {
files_list <- list.files(directory, full.names = TRUE)[id]
data.frame(id, nobs = sapply(files_list, function(x) nrow(na.omit(read.csv(x)))))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.