2017-01-05 2 views
0

Я хочу прочитать некоторый файл, затем удаляет значения NA из прочитанных, а затем дает количество наблюдений, оставшихся после удаления NA . Я написал этот скрипт, но результат был таким странноДобавление в кадр данных с циклом for

complete <- function(directory, id){ 
    fileList <- list.files(directory, full.names = TRUE)[id] 
    datafamelist <- data.frame(id = numeric(), nobs = numeric()) 
    for(Rfile in fileList){ 
     cleandata <- na.omit(read.csv(file = Rfile)) 
     datafamelist <- rbind(datafamelist, c(cleandata$ID, nrow(cleandata))) 
    } 
    datafamelist 
} 

и результат был что-то вроде этого:

полный ("~/Desktop/DataSets/specdata", 1: 5)

X1L X1L.1 X1L.2 X1L.3 X1L.4 X1L.5 X1L.6 X1L.7 X1L.8 X1L.9 X1L.10 X1L.11 X1L.12 X1L.13 X1L.14 X1L.15 X1L.16 X1L.17 X1L.18 X1L.19 
1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3 3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4 4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5 5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.20 X1L.21 X1L.22 X1L.23 X1L.24 X1L.25 X1L.26 X1L.27 X1L.28 X1L.29 X1L.30 X1L.31 X1L.32 X1L.33 X1L.34 X1L.35 X1L.36 X1L.37 
1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.38 X1L.39 X1L.40 X1L.41 X1L.42 X1L.43 X1L.44 X1L.45 X1L.46 X1L.47 X1L.48 X1L.49 X1L.50 X1L.51 X1L.52 X1L.53 X1L.54 X1L.55 
1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.56 X1L.57 X1L.58 X1L.59 X1L.60 X1L.61 X1L.62 X1L.63 X1L.64 X1L.65 X1L.66 X1L.67 X1L.68 X1L.69 X1L.70 X1L.71 X1L.72 X1L.73 
1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.74 X1L.75 X1L.76 X1L.77 X1L.78 X1L.79 X1L.80 X1L.81 X1L.82 X1L.83 X1L.84 X1L.85 X1L.86 X1L.87 X1L.88 X1L.89 X1L.90 X1L.91 
1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.92 X1L.93 X1L.94 X1L.95 X1L.96 X1L.97 X1L.98 X1L.99 X1L.100 X1L.101 X1L.102 X1L.103 X1L.104 X1L.105 X1L.106 X1L.107 X1L.108 
1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5 
    X1L.109 X1L.110 X1L.111 X1L.112 X1L.113 X1L.114 X1L.115 X1L.116 X117L 
1  1  1  1  1  1  1  1  1 117 
2  2  2  2  2  2  2  2  2  2 
3  3  3  3  3  3  3  3  3  3 
4  4  4  4  4  4  4  4  4  4 
5  5  5  5  5  5  5  5  5  5 

вместо того, чтобы, как это:

## id nobs 
## 1 1 117 
## 2 2 000 
## 3 3 000 
## 4 4 000 
## 5 5 000 

где 000 является количеством наблюдаемых значений, которые должны быть там

+0

извините, что я забыл добавить, я использую: R версия 3.3.2 на linux mint 18.1 – Snowflake

+1

@Procrastinatus Maximus Спасибо большое, что было очень полезно, я не знал, что мой вопрос был дублирован , так как я действительно искал решение много раз и ничего не нашел, я действительно ценю ур ответ, хотя спасибо mate – Snowflake

+0

еще одна вещь mate у меня была моя функция, как эта, как я думаю, ее более общий так, так что вам не нужно беспокоиться о имени больше: complete <- function (directory, id) { fileList <- list.files (directory, full.names = TRUE) [id] y <- vector() для (i в fileList) { x <- id y <- c (y, sum (complete e.cases (read.csv (file = i))) } df <- data.frame (x, y) colnames (df) <- c ("id", "nobs") return (df) } – Snowflake

ответ

0

Try читать и формировать свой dataframe как это

setwd("<Your Directory>") 
file_list <- list.files() 

for (file in file_list){ 

    # if the merged dataset doesn't exist, create it 
    if (!exists("rawdata")){ 
    rawdata <- read.csv(file) 
    } 

    # if the merged dataset does exist, append to it 
    if (exists("rawdata")){ 
    temp_dataset <- read.csv(file) 
    rawdata<-rbind(rawdata, temp_dataset) 
    rm(temp_dataset) 
    } 

} 

Для NA, вы можете проверить, в какой колонке содержится NA, и работать согласно

чтобы проверить NA, используйте summary

Смежные вопросы