选择大于值

时间:2017-09-06 15:43:39

标签: r

我的问题似乎相当简单,但我查看了许多答案,却找不到合适的答案。所以我有一个如下所示的小数据,我希望“count_36”只包含大于36的列。我的代码在下面

count_36 <- df[,which(df[,1:19] > 36)]

数据如下所示:

> A      B  D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T
> 192   12  84  72  84  84  84  84  84  84  60  12  12  36  84  84  84  60  84

然而结果还包括B栏。我不知道为什么。你们任何人都可以纠正我吗?谢谢!

3 个答案:

答案 0 :(得分:1)

试试这个

df[,apply(df,2,max)>36]

数据

df <- data.frame(A=192,B=12,D=84,E=72,F=84,H=84,I=84,J=84,K=84,L=60,M=12,N=12,O=36,P=84,Q=84,R=84,S=60,T=84)

输出

df[,apply(df,2,max)>36]

#     A  D  E  F  H  I  J  K  L  P  Q  R  S  T
# 1 192 84 72 84 84 84 84 84 60 84 84 84 60 84

答案 1 :(得分:0)

使用arr.ind = TRUEwhich来提取df中大于36的元素的索引(行和列)。然后,使用第二列中的唯一值子集[,2]

df个索引
#DATA
df = read.table(strip.white = TRUE, stringsAsFactors = FALSE, header = TRUE,
text = "A      B  D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T
        192   12  84  72  84  84  84  84  84  84  60  12  12  36  84  84  84  60  84")

df[unique(which(df > 36, arr.ind = TRUE)[,2])]
#    A  D  E  F  G  H  I  J  K  L  P  Q  R  S  T
#1 192 84 72 84 84 84 84 84 84 60 84 84 84 60 84

答案 2 :(得分:0)

这个也有效

df <-data.frame(A=192,B=12,D=84,E=72,F=84,H=84,I=84,J=84,K=84,L=60,M=12,N=12,O=36,P=84,Q=84,R=84,S=60,T=84)

df[, df[,1:length(df)] > 36]