Подтвердить что ты не робот

Как подсчитать, сколько значений на уровень в данном коэффициенте?

У меня есть data.frame mydf с около 2500 строк. Эти строки соответствуют 69 классам объектов в colum 1 mydf$V1, и я хочу подсчитать, сколько строк на класс объектов у меня есть. Я могу получить коэффициент этих классов с помощью:

objectclasses = unique(factor(mydf$V1, exclude="1"));

Каков краткий R-способ подсчета строк для класса объектов? Если бы это был какой-то другой язык, я бы проходил массив с циклом и сохранял счет, но я новичок в программировании R и пытаюсь использовать R-векторизованные операции.

4b9b3361

Ответ 1

Или используя библиотеку dplyr:

library(dplyr)
set.seed(1)
dat <- data.frame(ID = sample(letters,100,rep=TRUE))
dat %>% 
  group_by(ID) %>%
  summarise(no_rows = length(ID))

Обратите внимание на использование %>%, которое аналогично использованию труб в bash. Фактически, код выше труб dat в group_by, и результат этой операции передается в summarise.

Результат:

Source: local data frame [26 x 2]

   ID no_rows
1   a       2
2   b       3
3   c       3
4   d       3
5   e       2
6   f       4
7   g       6
8   h       1
9   i       6
10  j       5
11  k       6
12  l       4
13  m       7
14  n       2
15  o       2
16  p       2
17  q       5
18  r       4
19  s       5
20  t       3
21  u       8
22  v       4
23  w       5
24  x       4
25  y       3
26  z       1

Подробнее см. dplyr, а также подробную информацию о отдельных функциях.

Ответ 2

Вот два способа сделать это:

set.seed(1)
tt <- sample(letters,100,rep=TRUE)

## using table
table(tt)
tt
a b c d e f g h i j k l m n o p q r s t u v w x y z 
2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1 
## using tapply
tapply(tt,tt,length)
a b c d e f g h i j k l m n o p q r s t u v w x y z 
2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1 

Ответ 3

Использование пакета plyr:

library(plyr)

count(mydf$V1)

Он вернет вам частоту каждого значения.

Ответ 4

Используя data.table

 library(data.table)
 setDT(dat)[, .N, keyby=ID] #(Using @Paul Hiemstra `dat`)

Или используя dplyr 0.3

 res <- count(dat, ID)
 head(res)
 #Source: local data frame [6 x 2]

 #  ID n
 #1  a 2
 #2  b 3
 #3  c 3
 #4  d 3
 #5  e 2
 #6  f 4

или

  dat %>% 
      group_by(ID) %>% 
      tally()

или

  dat %>% 
      group_by(ID) %>%
      summarise(n=n())

Ответ 5

Мы можем использовать summary в столбце факторов:

summary(myDF$factorColumn)

Ответ 6

Еще один подход заключается в применении функции n(), которая считает количество наблюдений

library(dplyr)
library(magrittr)
data %>% 
  group_by(columnName) %>%
  summarise(Count = n())

Ответ 7

Используйте пакет plyr с lapply, чтобы получить частоты для каждого значения (уровня) и каждой переменной (фактора) в вашем фрейме данных.

library(plyr)
lapply(df, count)

Ответ 8

Если я просто хочу узнать, сколько уникальных уровней факторов существует в данных, я использую:

length(unique(df$factorcolumn))