【发布时间】:2014-02-21 14:41:09
【问题描述】:
我搜索了很多类似Subsetting a dataframe in R by multiple conditions这样的帖子,关于选择“哪个”功能来选择值数据框数据框,但找不到其他解决方案。问题如下:
我有以下包含数千个案例的数据集:
> head(Datos)
tipo estacion hora usos
1 hábil A.SANIN X4 11
2 hábil ALAMOS X4 4
3 hábil AMANECER X4 45
4 hábil AMERICAS X4 2
5 hábil ATANASIO X4 10
6 hábil BELALCAZAR X4 5
. . . .
. . . .
. . . .
上面数据帧子集的变量是“usos”变量“tipo”取值:“hábil”、“Sábado”和“Festivo”。变量“estacion”有 60 个级别,变量“hora”有 22 个值:x4, x5, x6, ... x23。由于我需要根据 "tipo" 、 "estacion" 和 "hora" 的所有组合计算四分位数,我使用 "aggregate" 函数并计算临界值,所以我得到了这个:
> head(todo)
Group.1 Group.2 Group.3 y1 y2
1 hábil X4 A.SANIN 1.5 21.5
2 Sábado X4 A.SANIN 4.0 12.0
3 Festivo X4 A.SANIN 0.0 0.0
4 hábil X5 A.SANIN 66.0 130.0
5 Sábado X5 A.SANIN 40.0 96.0
6 Festivo X5 A.SANIN 7.5 43.5
. .
. .
. .
每一行都是不同的情况,值y1和y2是我的临界值。需要,根据我选择的dataframe“todo”的值y1和y2取值小于y1或者大于dataframe“Datos”的变量“usos”的y2。但在一个循环中,数据框“todo”上有 3480 个组合,即 3480 行。并将其存储在另一个矩阵中。
例如,对于第一种情况如下:
print(which(subset(Datos$usos,Datos$tipo=="hábil"&Datos$hora=="X4"&Datos$estacion=="A.SANIN")<todo$y1[1] | subset(Datos$usos,Datos$tipo=="hábil"&Datos$hora=="X4"&Datos$estacion=="A.SANIN")>todo$y2[1]))
我需要对数据框“全部”的所有行执行此操作,并将其应用于“使用”数据框“数据”。
谢谢!
【问题讨论】:
标签: r