Answers:
如果使用as.data.frame()将矩阵转换为数据框,则这样做更容易。在这种情况下,先前的答案(使用子集或m $ three)将起作用,否则将不起作用。
要对矩阵执行操作,可以按名称定义列:
m[m[, "three"] == 11,]
或按号码:
m[m[,3] == 11,]
请注意,如果只有一行匹配,则结果是整数向量,而不是矩阵。
m[m[,3] == 11,,drop=FALSE]
df <- df[!which(df$ARID3A:df$YY1 == "U"),]
,在这里我想从我这里DF一系列列删除那些行(ARID3A:YY1)的值为ü。
子集是一个非常慢的函数,我个人认为它没有用。
我假设你有一个data.frame,阵列,矩阵称为Mat
有A
,B
,C
列名; 那么您要做的就是:
如果一栏上有一个条件,那么假设A栏
Mat[which(Mat[,'A'] == 10), ]
如果在不同的列上有多个条件,则可以创建一个虚拟变量。假设条件为A = 10
,B = 5
和C > 2
,则我们有:
aux = which(Mat[,'A'] == 10)
aux = aux[which(Mat[aux,'B'] == 5)]
aux = aux[which(Mat[aux,'C'] > 2)]
Mat[aux, ]
通过测试的速度优势system.time
,该which
方法比该subset
方法快10倍。
如果数据集被称为数据,那么满足以下条件的所有行都可以通过-接收到“ pm2.5”列的值> 300的条件:
数据[数据['pm2.5']> 300,]
[ ]
答案之间的代码,您将更加清楚地看到这一点。