specdata <- list.files(getwd(), pattern="*.csv")
directory <- lapply(specdata, read.csv)
directory_final <- do.call(rbind, directory)
library(tidyverse)
one <- select(directory_final, nitrate, ID)
two <- no.omit(one)
a <- select(directory_final, sulfate, ID)
b <- na.omit(a)
two_df <- mutate(two, id = rownames(two))
b_df <- mutate(b, id = rownames(b))
library(plyr)
alpha <- join(two_df, b_df, by = "id", match = "all")
alpha$id <- NULL
dput(head(alpha, 5))
structure(list(sulfate = c(7.21, 5.99, 4.68, 3.47, 2.42), ID = c(1L,
1L, 1L, 1L, 1L), nitrate = c(0.651, 0.428, 1.04, 0.363, 0.507
), ID = c(1L, 1L, 1L, 1L, 1L)), row.names = c(NA, 5L), class = "data.frame")
dim(alpha)
118783 4
Думайте об этом так;У меня есть две длинные струны, одна из которых простирается на 10 метров, а другая на 12 метров.Одна строка красная, а другая синяя.обе струны имеют сучки с интервалами 0,05 см по всей струне.Каждые 10 узлов я даю каждому отдельному узлу ID-1 для красного и ID1-1 для синего и так далее.У меня есть каждая строка на каждой руке, однако;Я хочу, чтобы эти две строки были одной длинной строкой, слитой бок о бок.Поэтому я связываю верх и конец нити.Теперь, если я хочу отдельный узел, от ID-1, 1/10 длины строки ID-1, я развязываю первый и так далее.- Мне нужна функция, которая позволяет мне находить среднее значение каждого развязываемого узла из ID-1 в диапазоне от 1: 332 или ID1-1 в диапазоне от 1: 332.
Мне нужно что-то вроде
alpha_function(nitrate, ID = 1:50)
alpha_function(sulfate, ID = 1:50)
Функция, которая может собирать все средние значения нитратов или сульфатов по ID
. Кроме того, когда я использую функцию 'join', я могу принимать только средние значения первых data.frame.(b_df), который я помещаю в эту функцию.тогда как вторая всегда возвращает NA.
mean(alpha$sulfate)
3.189369
mean(alpha$nitrate)
NA
Я также хотел бы знать, почему это происходит и как это можно исправить, чтобы можно было принять оба итоговых значения?