如何在符合条件的R数据框中找到列索引?
要查找与条件匹配的列索引,我们可以使用apply函数。此条件可以是列中的值大于或小于,小于,等于或其他任何数字变量条件。例如,如果我们要检查数据df的哪些列包含大于5的行中的值,则可以使用命令apply(df,1,function(x)which(x>5))。
考虑以下数据帧-
示例
x1<-rnorm(20,2,0.05) x2<-rnorm(20,2,0.65) df1<-data.frame(x1,x2) df1输出结果
x1 x2 1 2.083832 3.238437 2 1.999989 2.409343 3 1.908010 2.088710 4 1.914835 2.421812 5 2.080797 1.705331 6 1.977896 1.337907 7 1.987243 2.687881 8 2.002822 2.850734 9 1.932333 2.470400 10 1.955817 1.652495 11 2.085809 1.490701 12 1.986614 1.733392 13 1.975024 1.742006 14 1.983986 2.441801 15 1.991714 2.450637 16 1.947738 1.105244 17 2.052789 2.020752 18 1.989781 1.438219 19 2.023067 1.615221 20 2.086341 3.046352
检查每行df1的哪些列的值大于1.5-
apply(df1,1,function(x)which(x>1.5))
[[1]] x1 x2 1 2 [[2]] x1 x2 1 2 [[3]] x1 x2 1 2 [[4]] x1 x2 1 2 [[5]] x1 x2 1 2 [[6]] x1 1 [[7]] x1 x2 1 2 [[8]] x1 x2 1 2 [[9]] x1 x2 1 2 [[10]] x1 x2 1 2 [[11]] x1 1 [[12]] x1 x2 1 2 [[13]] x1 x2 1 2 [[14]] x1 x2 1 2 [[15]] x1 x2 1 2 [[16]] x1 1 [[17]] x1 x2 1 2 [[18]] x1 1 [[19]] x1 x2 1 2 [[20]] x1 x2 1 2