Р: Как суммировать значения в разных столбцах без повторов? - PullRequest
0 голосов
/ 06 июня 2018

Вот пример моего набора данных

head(visite_cliente_date)
  CodCliente                                  museo       data Month January February March April May June July
1      76330                BORGO E ROCCA MEDIEVALE 2012-12-01    12       0        0     0     0   0    0    0
2      86660                BORGO E ROCCA MEDIEVALE 2012-12-01    12       0        0     0     0   0    0    0
3      87629                BORGO E ROCCA MEDIEVALE 2012-12-01    12       0        0     0     0   0    0    0
4     255734                BORGO E ROCCA MEDIEVALE 2012-12-01    12       0        0     0     0   0    0    0
5       1496 GAM - GALLERIA CIVICA ARTE MODERNA E C 2012-12-01    12       0        0     0     0   0    0    0
6      16689 GAM - GALLERIA CIVICA ARTE MODERNA E C 2012-12-01    12       0        0     0     0   0    0    0
  August September October November Dicember
1      0         0       0        0        1
2      0         0       0        0        1
3      0         0       0        0        1
4      0         0       0        0        1
5      0         0       0        0        1
6      0         0       0        0        1

CodCliente: ID клиента

Mueso: Музей посещен

данные: дата посещения

Месяц: месяц посещения

Каждый месяц: я создал пустышку для каждого месяца в соответствии со значением "месяц"

Я хотел бы создать новую переменную с суммой месяца вкоторый покупатель отправил в музей.

Пример: если покупатель посещал музей хотя бы один раз в марте, апреле и июне, переменная имеет значение «3».

Example2: Если клиент посещал музей три раза в июне, переменная имеет значение «1».

Заранее спасибо за ответы!

1 Ответ

0 голосов
/ 07 июня 2018

Я наконец сделал это, но очень долго

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

Gennaio <- subset(visite_cliente_date, January == 1)
Gennaio$Month <- NULL
Gennaio$February <- NULL
Gennaio$March <- NULL
Gennaio$April <- NULL
Gennaio$May <- NULL
Gennaio$June <- NULL
Gennaio$July <- NULL
Gennaio$August <- NULL
Gennaio$September <- NULL
Gennaio$October <- NULL
Gennaio$November <- NULL
Gennaio$Dicember <- NULL

Gennaio <- aggregate(Gennaio$January, list("ID" = Gennaio$CodCliente), sum)

Gennaio$January <- Gennaio$x
Gennaio$x <- NULL

head(Gennaio)
   ID January
1  41       1
2  94       1
3 106       5
4 111       1
5 113       1
6 118       1

Затем я объединил все мои наборы данных, заменив значения NA на 0

> Visite_mesi <- merge(Gennaio, Febbraio, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Marzo, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Aprile, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Maggio, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Giugno, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Luglio, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Agosto, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Settembre, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Ottobre, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Novembre, by="ID", all=TRUE)
> Visite_mesi <- merge(Visite_mesi, Dicembre, by="ID", all=TRUE)

> Visite_mesi[is.na(Visite_mesi)] <- 0
    > 
   > head(Visite_mesi)
   ID January February March April May June July August September
1  41       1        0     0     0   0    0    0      0         0
2  94       1        2     1     1   1    1    0      0         0
3 106       5        9     6     3   4    6    1      7         7
4 111       1        3     1     1   3    5    0      0         0
5 113       1        1     0     0   0    0    0      0         3
6 118       1        0     1     1   0    1    0      1         0
  October November Dicember
1       0        0        0
2       1        0        0
3       3        4        5
4       0        0        0
5       0        0        0
6       0        0        0

В конце я преобразовал значения больше 2 в 1

Visite_mesi$January[Visite_mesi$January >= 2] <- 1
Visite_mesi$February[Visite_mesi$February >= 2] <- 1
Visite_mesi$March[Visite_mesi$March >= 2] <- 1
Visite_mesi$April[Visite_mesi$April >= 2] <- 1
Visite_mesi$May[Visite_mesi$May >= 2] <- 1
Visite_mesi$June[Visite_mesi$June >= 2] <- 1
Visite_mesi$July[Visite_mesi$July >= 2] <- 1
Visite_mesi$August[Visite_mesi$August >= 2] <- 1
Visite_mesi$September[Visite_mesi$September >= 2] <- 1
Visite_mesi$October[Visite_mesi$October >= 2] <- 1
Visite_mesi$November[Visite_mesi$November >= 2] <- 1
Visite_mesi$Dicember[Visite_mesi$Dicember >= 2] <- 1

В конце я просто суммировал все значения в столбцах месяца, и поэтому я создал переменную, которую я хотел

> Visite_mesi$sum_month <- rowSums( Visite_mesi[,2:13] )
> head(Visite_mesi)
   ID January February March April May June July August September
1  41       1        0     0     0   0    0    0      0         0
2  94       1        1     1     1   1    1    0      0         0
3 106       1        1     1     1   1    1    1      1         1
4 111       1        1     1     1   1    1    0      0         0
5 113       1        1     0     0   0    0    0      0         1
6 118       1        0     1     1   0    1    0      1         0
  October November Dicember sum_month
1       0        0        0         1
2       1        0        0         7
3       1        1        1        12
4       0        0        0         6
5       0        0        0         3
6       0        0        0         5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...