Как подсчитать уникальные значения столбца в R - PullRequest
0 голосов
/ 21 июня 2020

У меня есть база данных, и я хотел бы знать, сколько людей (идентифицированных по ID) соответствуют характеристикам c. Список такой:

111   A
109   A
112   A
111   A
108   A

Мне нужно только посчитать, сколько идентификаторов имеют эту функцию, проблема в том, что идентификаторы дублируются. Я пробовал с

count(df, vars = ID)

, но он не показывает общее количество идентификаторов, а только то, сколько раз они повторяются. То же самое с

count(df, c('ID')

, поскольку он показывает общее количество идентификаторов, и многие из них дублируются, мне нужно посчитать их один раз.

Есть ли у вас предложения? Использование табличной функции невозможно из-за размера этой базы данных.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Вы можете сначала удалить дубликаты, используя unique, а затем count оставшиеся строки:

d <- tribble(
~ID,~feature,  
111,   "A",
109,   "A",
112,   "A",
111,   "A",
108,   "A")

count(unique(d,vars = c(ID, feature)),vars=ID)

   vars     n
  <dbl> <int>
1   108     1
2   109     1
3   111     1
4   112     1
0 голосов
/ 21 июня 2020

Мы можем использовать n_distinct() из dplyr для подсчета количества уникальных значений для столбца во фрейме данных.

textFile <- "id var1
111   A
109   A
112   A
111   A
108   A"

df <- read.table(text = textFile,header = TRUE)
library(dplyr)
df %>% summarise(count = n_distinct(id))

... и вывод:

> df %>% summarise(count = n_distinct(id))
  count
1     4

Мы также можем суммировать подсчеты в одном или нескольких столбцах by_group().

textFile <- "id var1
111   A
109   A
112   A
111   A
108   A
201   B
202   B
202   B
111   B
112   B
109   B"

df <- read.table(text = textFile,header = TRUE)
df %>%  group_by(var1) %>% summarise(count = n_distinct(id))

... и вывод:

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 2 x 2
  var1  count
  <chr> <int>
1 A         4
2 B         5
...