#r #dataframe #append
#r #фрейм данных #добавить
Вопрос:
У меня есть следующий df:
cat1 cat2 cat3 rnumb rstar NA cat4 cat5
1 Appliances Small Appliances Coffee Maker <NA> <NA> NA <NA> NA
8 Health amp; Beauty Beauty Hair Care <NA> <NA> NA Shampoo NA
9 Holiday Gift Centre Gift Ideas Gifts for the Family <NA> <NA> NA <NA> NA
22 Health amp; Beauty Personal Care Shaving <NA> <NA> NA Razors NA
23 Health amp; Beauty Personal Care Deodorants amp; Antiperspirants <NA> <NA> NA <NA> NA
25 Health amp; Beauty Personal Care Feminine Care <NA> <NA> NA <NA> NA
У меня есть количество уникальных cat2 и cat3 для каждого cat1, использующего by()
tot.cat2 <- by(x1, x1$ cat1, длина функции (x) (уникальная (x $ cat2)))
pur.new$cat1: Apparel
[1] 9
-----------------------------------------------------------------------------------------------
pur.new$cat1: Appliances
[1] 3
-----------------------------------------------------------------------------------------------
pur.new$cat1: Automotive
[1] 7
-----------------------------------------------------------------------------------------------
pur.new$cat1: Baby
[1] 13
-----------------------------------------------------------------------------------------------
pur.new$cat1: Electronics
[1] 16
-----------------------------------------------------------------------------------------------
pur.new$cat1: Furniture
[1] 9
Как мне добавить эти значения в первый фрейм данных? В идеале, в x1 для каждой строки, в которой есть устройства, я хочу, чтобы еще один столбец имел номер 3, номер уникального cat2 в устройствах.
Комментарии:
1. Вы могли бы использовать
aggregate
, т.е.aggregate(cat2~cat1, x1, FUN = function(x) length(unique(x)))
2. @akrun
x$tot.cat2 <- aggregate(cat2~cat1, x1, FUN = function(x) length(unique(x)))
выдает ошибкуreplacement has 18 rows, data has 25732
3.
aggregate
Результатом является фрейм данных. Вы пытаетесь назначить data.frame столбцу. Просто делайx2 <- aggregate(cat2~cat1, x1, FUN = function(x) length(unique(x)))