R programming_逻辑条件下的子行设置

时间:2017-11-03 19:24:42

标签: r dataframe subset

示例数据:

  

的sampleData

Ozone Solar.R Wind Temp Month Day sampleData.Ozone

1      41     190  7.4   67     5   1               41

2      36     118  8.0   72     5   2               36

3      12     149 12.6   74     5   3               12
.........

想要提取条件为$ozone > 31

的记录

以下是代码:

data <- sampleData[sampleData$ozone > 31]

并得到以下错误:

  

if中的错误(继承(X [[j]],“data.frame”)&amp;&amp; ncol(xj)&gt; 1L)X [[j]]&lt; - as.matrix(X [[ j]]):     缺少需要TRUE / FALSE的值

我该如何纠正?谢谢!

1 个答案:

答案 0 :(得分:1)

R区分大小写,因此您的ozone必须与data.frame中的名称相匹配。另外,对于data.frame的子集,您需要用逗号分隔的两个索引(行和列)。如果逗号后面没有任何内容,则表示您正在选择所有

sampleData[sampleData$Ozone > 31,]

data.frame

分组的其他方法
subset(sampleData, Ozone > 31)

dplyr

library(dplyr)
sampleData %>%
  filter(Ozone > 31)

<强>结果:

  Ozone Solar.R Wind Temp Month Day sampleData.Ozone
1    41     190  7.4   67     5   1               41
2    36     118  8.0   72     5   2               36

数据:

sampleData = structure(list(Ozone = c(41L, 36L, 12L), Solar.R = c(190L, 118L, 
149L), Wind = c(7.4, 8, 12.6), Temp = c(67L, 72L, 74L), Month = c(5L, 
5L, 5L), Day = 1:3, sampleData.Ozone = c(41L, 36L, 12L)), .Names = c("Ozone", 
"Solar.R", "Wind", "Temp", "Month", "Day", "sampleData.Ozone"
), class = "data.frame", row.names = c("1", "2", "3"))