我的问题似乎相当简单,但我查看了许多答案,却找不到合适的答案。所以我有一个如下所示的小数据,我希望“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栏。我不知道为什么。你们任何人都可以纠正我吗?谢谢!
答案 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 = TRUE
和which
来提取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]