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

Например, мой df был такой:

 A   B   
 1   car
 2   car
 3   bus
 4   car
 5   plane 
 6   plane 
 7   plane 
 8   plane 
 9   plane 
 10   train

Я хотел бы найти:

  car
  bus
  plane
  train
  4

Как бы я это сделал?

4
user3443063 2 Сен 2017 в 23:17

5 ответов

Лучший ответ
categories <- unique(yourDataFrame$yourColumn) 
numberOfCategories <- length(categories)

Довольно безболезненно.

14
CCD 2 Сен 2017 в 20:28

Кроме того, для просмотра отсортированных значений вы можете использовать следующее:

sort(table(df$B), decreasing = TRUE)

И вы увидите значения в порядке убывания.

1
V C 3 Янв 2019 в 02:29

Вы можете просто использовать уникальные:

x <- unique(df$B)

И он будет извлекать уникальные значения в столбце. Вы можете использовать его с apply, чтобы получить их из каждого столбца!

4
sconfluentus 2 Сен 2017 в 20:18

Я бы порекомендовал вам использовать здесь факторы, если вы еще этого не сделали. Это просто и понятно.

levels() дает уникальные категории, а nlevels() - их количество. Если мы сначала запустим droplevels() для данных, мы позаботимся о любых уровнях, которых больше нет в данных.

with(droplevels(df), list(levels = levels(B), nlevels = nlevels(B)))
# $levels
# [1] "bus"   "car"   "plane" "train"
#
# $nlevels
# [1] 4
2
Rich Scriven 2 Сен 2017 в 20:54

Это дает уникальную, уникальную длину и частоту:

table(df$B)
bus   car plane train 
1     3     5     1

length(table(x$B))
[1] 4
5
user8552923user8552923 2 Сен 2017 в 20:30