R 设置空气质量数据子集时选择的未定义列
我想对空气质量数据进行子集,以便在R 设置空气质量数据子集时选择的未定义列,r,R,我想对空气质量数据进行子集,以便在airquality$Ozone等于41时获得airquality$temp。 我的代码是 airquality[airquality$Ozone==41, airquality$Temp] str()我的数据是 airquality[airquality$Ozone==41, airquality$Temp] 'data.frame': 153 obs. of 6 variables: $ Ozone : int 41 36 12 18 NA
airquality$Ozone
等于41时获得airquality$temp
。
我的代码是
airquality[airquality$Ozone==41, airquality$Temp]
str()
我的数据是
airquality[airquality$Ozone==41, airquality$Temp]
'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 ...
对于子集的第二个参数,您需要的是列的名称,而不是列的实际值
airquality[airquality$Ozone==41, airquality$Temp]
i、 e.空气质量[空气质量$Ozone==41,“温度”]
airquality[airquality$Ozone==41, airquality$Temp]
此外,您的数据中有一些NA,我认为您希望对其进行过滤,因此您可能正在寻找更像:
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41&!is.na(airquality$Ozone),“Temp”]
简短回答:仅使用您要选择为字符的列
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41, "Temp"]
长答案:
airquality[airquality$Ozone==41, airquality$Temp]
如果使用索引([…,…]
)对data.frame
进行子集,则有几个选项
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41, airquality$Temp]
airquality[1,3] # extracting the 1st row of the 3rd column
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41, colnames(airquality) == "Temp"] # double logical subsetting
[,…]
中提供列的名称作为字符向量
airquality[airquality$Ozone==41, airquality$Temp]
airquality[, c("Temp", "somethingElse")]
airquality$Temp
(第二个示例)中的值子集设置之前已经选择了列,请勿在大括号中设置逗号,因为只剩下一维向量
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41, ]$Temp
airquality$Temp[airquality$Ozone==41] # both do essentially the same
airquality[airquality$Ozone==41, airquality$Temp]
airquality[airquality$Ozone==41, airquality$Temp]
?
airquality[airquality$Ozone==41, airquality$Temp]
在这种情况下,您可以按行逻辑地进行子集,这是绝对正确的。另一方面,按列的子集将是按列的数字子集,因为airquality$Temp
将整数向量解析为列的子集。因此,您将最终处理不存在且包含NA
的列67、NA等。因此,R返回错误“undefined columns selected”
airquality[airquality$Ozone==41, airquality$Temp]
对于R的子集的进一步介绍,请看
airquality$Temp[which(airquality$Ozone==41)]
欢迎来到SO。尝试airquality[airquality$Ozone==41,“Temp”]
或airquality[airquality$Ozone==41,]$Temp
或airquality$Temp[airquality$Ozone==41]如果您是R新手,您应该了解R中子集的基本原则。请参考
airquality[airquality$Ozone==41, airquality$Temp]