Неопределенные столбцы, выбранные при настройке данных о качестве воздуха - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу поднастроить данные о качестве воздуха, чтобы получить airquality$temp, когда airquality$Ozone равно 41. Мой код

airquality[airquality$Ozone==41, airquality$Temp]

str() моих данных

'data.frame':   153 obs. of  6 variables:
 $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
 $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
 $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...    
 $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
 $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
 $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Короткий ответ : используйте только тот столбец, который хотите выбрать как character

airquality[airquality$Ozone==41, "Temp"]

Длинный ответ :

Если выподмножество data.frame с использованием индексов ([..., ...]), у вас есть несколько вариантов.

  1. вы можете использовать числовое подмножество: вы просто указываете номер (а) номеров строк / столбцов в виде целочисленных значений.Например,

    airquality[1,3] # extracting the 1st row of the 3rd column
    
  2. вы можете использовать логическое подмножество (как вы делаете в вашем примере): с помощью логического сравнения вы можете идентифицировать строки / столбцы, которые нужно включить в вывод

    airquality[airquality$Ozone==41, colnames(airquality) == "Temp"] # double logical subsetting
    
  3. вы можете использовать подмножество символов: только для столбцов вы можете указать имя столбца (-ов) как символьный вектор внутри [, ...].

    airquality[, c("Temp", "somethingElse")]
    
  4. Вы можете использовать поднаборы «Доллар», если вы хотите указать только столбец onw: Вот два примера, которые приведут к одному и тому же выводу.Единственная разница заключается в том, является ли он первым подмножеством строки или столбца.Обратите внимание, что если вы уже выбрали столбец до поднабора значений в векторе airquality$Temp (2-й пример), не устанавливает запятую в фигурных скобках, поскольку у вас остался только одномерный вектор.

    airquality[airquality$Ozone==41, ]$Temp
    airquality$Temp[airquality$Ozone==41] # both do essentially the same
    

Что не так с

airquality[airquality$Ozone==41, airquality$Temp]

?

В этом случае вы должны логически подгруппировать по строкам, что абсолютно нормально.С другой стороны, подмножество столбцов будет числовым подмножеством столбцов, поскольку airquality$Temp будет анализировать целочисленный вектор в подмножестве столбцов.Следовательно, вы в конечном итоге будете обращаться к столбцам 67, NA и т. Д., Которые отсутствуют и содержат NA.Таким образом, R возвращает ошибку "undefined columns selected"

Для дальнейшего ознакомления с поднабором R, взгляните на https://adv -r.hadley.nz / subsetting.html

0 голосов
/ 07 сентября 2018

Требуется имя столбца, а не фактические значения столбца для второго аргумента вашего подмножества.

т.е. airquality[airquality$Ozone==41, "Temp"]

Кроме того, у вас есть некоторые NA в ваших данных, которые, я полагаю, вы хотите отфильтровать, так что вы, вероятно, ищете что-то более похожее на:

airquality[airquality$Ozone==41 & !is.na(airquality$Ozone), "Temp"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...