r - 对空气质量数据进行子集化时选择了未定义的列

标签 r

我想要对空气质量数据进行子集化,以便在 airquality$Ozone 等于 41 时获得 airquality$temp。 我的代码是

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 ...

最佳答案

简短回答:仅使用您要选择的列 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 中的值进行子集化之前已经选择了该列(第二个例子),不要在大括号内设置逗号,因为只剩下一个一维向量。

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

哪里出了问题

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

<强>?

在这种情况下,您可以按行进行逻辑子集,这绝对没问题。另一方面,按列的子集将是自 airquality$Temp 以来按列的数字子集。将把整数向量解析为列的子集。因此,您最终将处理不存在且包含 NA 的列 67、NA 等。 。因此,R 返回错误 "undefined columns selected"

有关 R 子集的进一步介绍,请查看 https://adv-r.hadley.nz/subsetting.html

关于r - 对空气质量数据进行子集化时选择了未定义的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52218183/

相关文章:

r - 根据值绘制一个变量,仅线和点

r - 概率链接 R 后去重

r - 在ggplot中调整文本在错误栏上方的位置

r - 如何从字符列表中生成随机单词?

r - 操纵日期和连续结果

r - 如何根据所有其他列绘制一个数据框列

r - 跳过read.csv中的所有前导空行

r - 如何将多个 qdap 转换链接在一起以进行 R 中的文本挖掘/情感(极性)分析

r - 如何索引R中向量中的TRUE元素

r - 如何提取多个下划线之间的数字