#r
Вопрос:
Я новичок в R и нуждаюсь в помощи в следующем. У меня есть эти данные:
Time Temperature
4.460672 96.32332
15.542545 96.32332
16.750386 96.32332
38.709795 96.32332
39.952442 96.32332
41.320898 96.32332
55.375259 96.32332
61.855321 100.47791
66.464590 100.47791
66.966965 100.47791
76.100513 100.47791
76.617365 100.47791
77.186545 100.47791
83.032157 100.47791
87.772441 100.47791
91.786988 100.47791
98.161933 100.47791
101.258411 100.47791
105.186097 100.47791
105.928643 100.47791
111.476967 100.47791
119.426046 100.47791
124.406232 92.70218
135.352858 92.70218
136.545958 92.70218
Мне нужно создать фрейм данных » minute_data’. Каждая строка соответствует одной минуте наблюдений, она содержит количество событий за эту минуту и температуру.
Некоторые минуты могут не содержать никаких событий. Строки, соответствующие таким минутам, должны быть исключены из фрейма данных.
Фрейм данных должен выглядеть следующим образом (первые 2 строки):
minute count temperature
1 7 96.32332
2 15 100.47791
Ответ №1:
Вы можете использовать dplyr
для этого:
library(dplyr)
df %>%
mutate(minute = Time %/% 60 1) %>%
group_by(minute) %>%
summarise(count = n(),
temperature = first(temperature)) %>%
select(-Time)
Примечание: Измените first
на mean
, если хотите, означает
Комментарии:
1. Спасибо, Сынок. Я попробовал твой код. Данные, которые я предоставил в качестве входных данных в своем вопросе, представляют собой только 25 строк csv-файла из 3414 строк. Я понял ваш код. Мой вопрос в том, где я должен упомянуть имя файла csv в коде. Я запустил ваш код и получил эту ошибку. Ошибка: объект «Время» не найден
2. Затем я немного изменил ваш код : df %>% мутировать(минута = Курс. Проект.Данные$Время %/% 60 1) %>% group_by(минуты) %>% обобщить(кол-во = N (в), Температура = первый(температура)) %>% выберите (времени) получил эту ошибку: Ошибка: колонка
minute
должна быть длина 1000 (число строк) или один, не 3414
Ответ №2:
И (конечно же) data.table
также может выполнить эту операцию
примеры данных
library( data.table )
DT <- fread("Time Temperature
4.460672 96.32332
15.542545 96.32332
16.750386 96.32332
38.709795 96.32332
39.952442 96.32332
41.320898 96.32332
55.375259 96.32332
61.855321 100.47791
66.464590 100.47791
66.966965 100.47791
76.100513 100.47791
76.617365 100.47791
77.186545 100.47791
83.032157 100.47791
87.772441 100.47791
91.786988 100.47791
98.161933 100.47791
101.258411 100.47791
105.186097 100.47791
105.928643 100.47791
111.476967 100.47791
119.426046 100.47791
124.406232 92.70218
135.352858 92.70218
136.545958 92.70218")
код
На самом деле это однострочный текст, но для удобства чтения я добавил несколько разрывов строк.
DT[, list( count = .N,
temperature = mean( Temperature ) ),
by = .( minute = floor( Time / 60 ) 1 )]
выход
# minute count temperature
# 1: 1 7 96.32332
# 2: 2 15 100.47791
# 3: 3 3 92.70218