如何按特定类型过滤变量

时间:2014-04-13 05:17:34

标签: r dataframe

以下表为例,我如何只过滤“chr”类型的列?例如,我想看到一个只有字符串变量的列表:
例如 : 木材chr

dat <- read.table(text = " Timber apcalc    admit       num
   pine        0        0         7
   pine        0        1         1
   oak         1        0         3
   olive       1        1         7
   olive       0        0         5
   oak         0        1         1
   pine        1        0         0
   pine        1        1         6", header = TRUE)

2 个答案:

答案 0 :(得分:1)

要为您提供数据框中的字符变量(列)列表,请使用:

sapply(dat[sapply(dat, is.character)],class)

在这种情况下它给出:

named list()

然而,这不会产生预期的结果。使用str(dat),您可以获得有关整个数据框中变量(列)的更多信息,其中包含:

'data.frame':   8 obs. of  4 variables:
 $ timber: Factor w/ 3 levels "oak","olive",..: 3 3 1 2 2 1 3 3
 $ apcalc: int  0 0 1 1 0 0 1 1
 $ admit : int  0 1 0 1 0 1 0 1
 $ num   : int  7 1 3 7 5 1 0 6

如您所见,数据集中没有字符变量。当你使用:

sapply(dat[sapply(dat, is.factor)],class)

它给出了:

  timber 
"factor" 

答案 1 :(得分:1)

您可以将is.numeric功能与sapply结合使用:

dat[sapply(dat, is.numeric)]
  apcalc admit num
1      0     0   7
2      0     1   1
3      1     0   3
4      1     1   7
5      0     0   5
6      0     1   1
7      1     0   0
8      1     1   6