我想要设置空气质量数据的子集,这样当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 ...发布于 2018-09-07 16:33:25
Short answer:仅使用要选择为character的列
airquality[airquality$Ozone==41, "Temp"]Long answer:
如果使用索引([..., ...])对data.frame进行子集设置,则有几种选择。
airqualityairquality$Ozone==41,colnames(airquality) == "Temp“# double logical subsetting
airquality,c("Temp","somethingElse")
airquality$Temp (第二个示例)中的值之前已经选择了该列,则不会在大括号内设置逗号,因为您只剩下一个一维向量。airqualityairquality$Ozone==41、$Temp airquality$Tempairquality$Ozone==41 #本质上做的是相同的
有什么问题吗?
airquality[airquality$Ozone==41, airquality$Temp]在这种情况下,您可以按行进行逻辑子集,这是完全没有问题的。另一方面,按列设置的子集将是按列设置的数字子设置,因为airquality$Temp会将整数向量解析为列的子集。因此,您最终将寻址不存在且包含NA的列67、NA等。因此,R返回错误"undefined columns selected"
有关R的子集的进一步介绍,请查看https://adv-r.hadley.nz/subsetting.html
发布于 2018-09-07 16:15:58
对于子集的第二个参数,您需要的是列的名称,而不是列的实际值。
即airquality[airquality$Ozone==41, "Temp"]
此外,您的数据中有一些NA,我认为您希望对其进行过滤,因此您可能正在寻找更类似的内容:
airquality[airquality$Ozone==41 & !is.na(airquality$Ozone), "Temp"]
https://stackoverflow.com/questions/52218183
复制相似问题