#r #date #read.csv
#r #Дата #read.csv
Вопрос:
Я читаю файл csv,
data <- read.csv("F:/Root/ PUMPING - data.csv", header = T, sep = ";")
который представляет собой фрейм данных из 1168 наблюдений с 8 переменными.
Переменные и таблица выглядят следующим образом:
Fiscal_Year SiteState county StartDate EndDate Site_Type Count_Site Sum_Gallons
1 FY 18 IA Butler 21/11/2017 21/11/2017 F 3 554700
2 FY 18 IA Cerro Gordo 18/10/2017 19/10/2017 F 1 1124085
3 FY 18 IA Cerro Gordo 19/10/2017 19/10/2017 F 1 478240
4 FY 18 IA Cerro Gordo 20/10/2017 20/10/2017 F 1 201306
5 FY 18 IA Cerro Gordo 20/10/2017 21/10/2017 F 1 973760
6 FY 18 IA Cerro Gordo 20/10/2017 23/10/2017 F 1 784743
7 FY 18 IA Cerro Gordo 26/10/2017 26/10/2017 F 1 246462
8 FY 18 IA Cerro Gordo 27/10/2017 29/10/2017 F 1 561808
9 FY 18 IA Cerro Gordo 30/10/2017 30/10/2017 F 1 519946
10 FY 18 IA Cerro Gordo 02/11/2017 02/11/2017 F 2 816240
11 FY 18 IA Cerro Gordo 03/11/2017 08/11/2017 F 1 1260160
12 FY 18 IA Cerro Gordo 04/11/2017 04/11/2017 F 2 757145
13 FY 18 IA Cerro Gordo 05/11/2017 05/11/2017 F 3 1022532
14 FY 18 IA Cerro Gordo 06/11/2017 06/11/2017 F 1 565500
15 FY 18 IA Cerro Gordo 06/11/2017 07/11/2017 F 1 682500
16 FY 18 IA Cerro Gordo 07/11/2017 07/11/2017 F 3 905442
17 FY 18 IA Cerro Gordo 08/11/2017 08/11/2017 F 1 128880
18 FY 18 IA Cerro Gordo 09/11/2017 09/11/2017 F 2 509776
19 FY 18 IA Cerro Gordo 10/11/2017 11/11/2017 F 1 730916
20 FY 18 IA Cerro Gordo 12/11/2017 12/11/2017 F 1 440577
Я столкнулся с несколькими проблемами при работе со столбцами дат.
Когда я применяю команду nrow(), это то, что я вижу:
> nrow(data)
[1] 1168
но для каждой переменной (например):
> nrow(data$Fiscal_Year)
NULL
> nrow(data$SiteState)
NULL
У кого-нибудь есть предложения о том, как это исправить и импортировать все данные в строки? Я не пытаюсь подсчитать объекты в векторах. Позже из-за этой структуры возникает несколько проблем. Я считаю, что они будут исправлены, если значения находятся в строках.
Комментарии:
1. Я не понимаю, что «я считаю, что они будут исправлены, если значения находятся в строках». Какие значения отсутствуют в каких строках? Уже указывалось, что вы не можете использовать
nrow
для векторов, подобных innrow(data$Fiscal_Year)
.2. > Когда я хочу выполнить некоторые другие процессы, как в примере: даты <- data_clean$StartDate 1:data_clean$ ndays, у меня появляется следующее сообщение числовое выражение содержит 1115 элементов: используется только первый
3. Да, проблема связана с вашим кодом, а не с данными. На правом сайте
:
может быть только одно единственное значение. Вы помещаете туда 1115 значений. Вы можете воспроизвести проблему с1:c(1,2)
помощью .
Ответ №1:
Это потому, что вывод data$Fiscal_Year
является вектором, а векторы не имеют строк для подсчета R, векторы являются одномерными объектами. Вам нужно использовать length(data$Fiscal_Year)
Комментарии:
1. Извините, может быть, я плохо объяснил себя. Я не пытаюсь подсчитать объекты внутри вектора. Способ, которым эта структура изложена, вызывает проблемы с некоторыми формулами позже. Я думаю, что наличие данных, в которых каждое значение находится в одной строке, решит все остальные проблемы.
2. Если вы считаете, что вам нужны данные в другом формате, можете ли вы указать то же самое в своем вопросе.
Ответ №2:
Вероятно, имеет смысл вернуться к более позднему коду и исправить его, чтобы он мог обрабатывать векторы в качестве входных данных, но вы можете сохранить структуру столбца фрейма данных, если вам нужно, используя nrow(data[, "Fiscal_Year", drop=FALSE])
. Вот пример с iris
набором данных, который поставляется с R:
data(iris)
str(iris)
# 'data.frame': 150 obs. of 5 variables:
# $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... nrow(iris)
# [1] 150
nrow(iris$Sepal.Length)
# NULL
nrow(iris[, "Sepal.Length"])
# NULL
nrow(iris[, "Sepal.Length", drop=FALSE])
# [1] 150
head(iris$Sepal.Length)
[1] 5.1 4.9 4.7 4.6 5.0 5.4
head(iris[, "Sepal.Length", drop=FALSE])
# Sepal.Length
# 1 5.1
# 2 4.9
# 3 4.7
# 4 4.6
# 5 5.0
# 6 5.4