Идентификация и подсчет строк в кадре данных R - PullRequest
0 голосов
/ 29 сентября 2018

Я очень плохо знаком с R и пытаюсь написать несколько строк, которые помогут мне определить и сосчитать некоторые строки, которые я импортирую в R из Excel.Данные выглядят так:

id           Solutions                           PFBA(R_Biomass_LPAREN_e_RPAREN_)
1   R_PEPCK R_TRANSH2 R_PGI R_GLUCK                         1.1750060160861004
2   R_PEPCK R_TRANSH2 R_PGI R_G1D                           1.1750060160861004
3   R_PFK R_6PGDH R_PYK R_PGM R_MAL1 R_MAL2 R_TALA2 R_G6P1D 3.2099449405406175
4   R_PFK R_6PGDH R_PYK R_PGM R_MAL1 R_MAL2 R_R5PI R_G6P1D  3.2099449405406175
5   R_PFK R_6PGDH R_PYK R_PGM R_MAL1 R_MAL2 R_TKT1 R_G6P1D  3.2099449405406175
6   R_6PGDH R_PYK R_PGM R_PGI R_MAL1 R_MAL2 R_TALA2 R_G6P1D 2.0012655526190235
7   R_6PGDH R_PYK R_PGM R_PGI R_MAL1 R_MAL2 R_R5PI R_G6P1D  2.0012655526190235
8   R_6PGDH R_PYK R_PGM R_PGI R_MAL1 R_MAL2 R_TKT1 R_G6P1D  2.0012655526190235

Моя цель - просмотреть столбец «Решения», определить реакции (при появлении новых) и сосчитать их.В конце мой идеальный вывод был бы что-то вроде:

R_PEPCK: 15
R_TRANHS2: 5
R_PGI: 2
(Etc...)

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

Спасибовы!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Если вы предпочитаете решение tidyverse:

df %>%
  separate_rows(Solutions, sep = " ") %>%
  count(Solutions)

# A tibble: 13 x 2
   Solutions     n
   <chr>     <int>
 1 R_6PGDH       1
 2 R_G1D         1
 3 R_G6P1D       1
 4 R_GLUCK       1
 5 R_MAL1        1
 6 R_MAL2        1
 7 R_PEPCK       2
 8 R_PFK         1
 9 R_PGI         2
10 R_PGM         1
11 R_PYK         1
12 R_TALA2       1
13 R_TRANSH2     2
0 голосов
/ 29 сентября 2018

Вот один из способов сделать это:

Пример данных

df <- data.frame(Solutions = c('R_PEPCK R_TRANSH2 R_PGI R_GLUCK', 'R_PEPCK R_TRANSH2 R_PGI R_G1D', 'R_PFK R_6PGDH R_PYK R_PGM R_MAL1 R_MAL2 R_TALA2 R_G6P1D'), stringsAsFactors = F)

                                                Solutions
1                         R_PEPCK R_TRANSH2 R_PGI R_GLUCK
2                           R_PEPCK R_TRANSH2 R_PGI R_G1D
3 R_PFK R_6PGDH R_PYK R_PGM R_MAL1 R_MAL2 R_TALA2 R_G6P1D

Количество уникальных строк (разделенных пробелами):

counts <- as.matrix(table(unlist(strsplit(df$Solutions, split = '\\W'))), ncol = 1)

          [,1]
R_6PGDH      1
R_G1D        1
R_G6P1D      1
R_GLUCK      1
R_MAL1       1
R_MAL2       1
R_PEPCK      2
R_PFK        1
R_PGI        2
R_PGM        1
R_PYK        1
R_TALA2      1
R_TRANSH2    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...