提问人:rezgar 提问时间:12/19/2022 更新时间:12/19/2022 访问量:49
如何根据递增的数字选择矩阵的列
How to select the column of a matrix based on increasing numbers
问:
我有一个包含 4 列的矩阵(下面的示例)
a b c d
1 10 85 0 115
2 15 74 0 125
3 18 65 0 130
4 20 64 0 150
我只想选择一个列,其数量随着列的长度(A 和 D 列)的增加而增加。
A D
1 10 115
2 15 125
3 18 130
4 20 150
df<-data.frame(A=c(10,15,18,20),B=c(85,74,65,64),
C=c(0,0,0,0),D=c(115,125,130,150))
注意
我的实际数据很大,这个例子是一个更好地解释的测试。答:
1赞
user2974951
12/19/2022
#1
用于严格增加
> names(which(colMeans(sapply(df,diff)>0)==1))
[1] "a" "d"
在数据框上使用它
> df[,colMeans(sapply(df,diff)>0)==1]
a d
1 10 115
2 15 125
3 18 130
4 20 150
评论
0赞
rezgar
12/19/2022
我想返回所有行,而不仅仅是列的名称
0赞
user2974951
12/19/2022
@rezgar 您知道如何使用列名或索引对数据框进行子集化吗?
1赞
rezgar
12/19/2022
谢谢,我已经得到了这条鳕鱼df[,(colMeans(sapply(df,diff)>0)==1)]
1赞
Ronak Shah
12/19/2022
#2
为此,有一个内置函数可以检查向量是否已排序,而无需实际排序的成本。因此,这应该在大型数据集上工作得更快。is.unsorted
strictly_increasing <- function(x) !is.unsorted(x, strictly = TRUE)
df[sapply(df, strictly_increasing)]
# A D
#1 10 115
#2 15 125
#3 18 130
#4 20 150
您也可以将它与dplyr
-
library(dplyr)
df %>% select(where(strictly_increasing))
上一个:dbplyr 选择不重复列
下一个:用 NA 填充两个矩阵的缺失数据
评论