сумма строк с похожим именем в г - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть эта таблица, в которой есть строки с одинаковыми или равными именами, которые мне нужны для суммирования этих строк. Сделайте одну запись, как я могу сделать это с помощью R. Я пытаюсь с al oop, потому что не работает.

или (длина i (df1 $ variante)) {+ if (df1 $ variante == "INTERNACIONAL" | df1 $ variante == "INTERNA C") {+ rbind (df1 $ variante) +} +
+
+} Предупреждающее сообщение: In if (df1 $ variante == "INTERNACIONAL" | df1 $ variante == "INTERNA C") {: условное обозначение>> 1 комментарий простые элементы меню

df_variante
                               x freq
1                                 259
2                  INTERNACIONAL  844
3                           GOLD 2164
4                GOLD EXECUTIVOS    2
5                        GRAFITE  109
6           GRAFITE INTERNACIONA  231
7                       INFINITE  546
8            INFINITE EXECUTIVOS    2
9                  INTERNACIONAL 4660
10                      NACIONAL 8390
11                       NANQUIM   12
12          NANQUIM INTERNACIONA   57
13                      PLATINUM 1407
14                         AZUL     9
15                     AZUL CARD  112
16                         BLACK  775
17                          GOLD 2872
18                 IN   INTERNAC    1
19                 IN   NACIONAL    7
20                 INTERNACIONAL 6678
21       MC ELECTRONIC GOV BAHIA    5
22                      NACIONAL 9692
23                      PLATINUM 1383
24               TIGRE  NACIONAL  207
25                 TURISMO  GOLD  337
26          TURISMO  INTERNACION  528
27             TURISMO  NACIONAL  841
28             TURISMO  PLATINUM   90
29                  TURISMO GOLD  322
30                 TURISMO INTER  531
31                 AMAZONIA GOLD    5
32        AMAZONIA INTERNACIONAL   14
33             AMAZONIA NACIONAL   19
34 EPIDEMIA CORINTHIANA PLATINUM    4
35                     JCB UNICO  203
36    UNIVERSITARIO  INTERNACION   92
37           UNIVERSITARIO INTER  262

1 Ответ

0 голосов
/ 06 апреля 2020

Если вы хотите, чтобы строки, в которых freq содержал, например, 'INTER', вы можете сделать следующее:

sum(df_variante$freq[grep(df_variante$x,pattern='INTER')])

Здесь вы просто используете grep для поиска в столбце x для поиска pattern 'INTER'

Я заметил, что есть строки с чем-то вроде 'IN NACIONAL'.

В этом случае вы можете сделать:

idxs=unique(c(grep(df_variante$x,pattern='INTER'),grep(df_variante$x,pattern='NACIONAL'),....)) #do this for all patterns of interest
df_sub=df_variante[idxs,]

Кстати: ваш l oop в вашем вопросе не работает, потому что - зацикливаясь по столбцам с length, вы хотите l oop по строкам:

for(i in 1:nrow(df_variante)){....}

Но это только если вы все еще хотите сделай так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...