Как разбить таблицу данных по содержанию слова в R - PullRequest
0 голосов
/ 31 августа 2018

У меня есть таблица данных, и я хочу разделить ее на несколько таблиц данных на основе одной переменной, но значение этой одной переменной может немного отличаться. Чтобы проиллюстрировать, что я имею в виду, вот пример. Давайте иметь эту таблицу данных:

+----------------------+-----------+-----------+
|      Variable1       | Variable2 | Variable3 |
+----------------------+-----------+-----------+
|     New York         |      1000 |      5000 |
|     New York - Bronx |       156 |     98498 |
|     New Jersey       |       198 |      4894 |
|     Detroit          |      1658 |     74984 |
|     New York Queens  |     16516 |    498465 |
+----------------------+-----------+-----------+

И вывод должен выглядеть так:

1-й

+----------------------+-----------+-----------+
|      Variable1       | Variable2 | Variable3 |
+----------------------+-----------+-----------+
|     New York         |      1000 |      5000 |
|     New York - Bronx |       156 |     98498 |
|     New York Queens  |     16516 |    498465 |
+----------------------+-----------+-----------+

2-й

+------------+-----------+-----------+
| Variable1  | Variable2 | Variable3 |
+------------+-----------+-----------+
| New Jersey |       198 |     4894  |
+------------+-----------+-----------+

3-й

+-----------+-----------+-----------+
| Variable1 | Variable2 | Variable3 |
+-----------+-----------+-----------+
| Detroit   |      1658 |     74984 |
+-----------+-----------+-----------+

1 Ответ

0 голосов
/ 31 августа 2018

Мы можем использовать sub, чтобы создать группирующую переменную для разбиения data.frame на list из data.frame s

split(df1, sub("^(\\w+\\s+\\w+).*$", "\\1", df1$Variable1))
#$Detroit
#  Variable1 Variable2 Variable3
#4   Detroit      1658     74984

#$`New Jersey`
#   Variable1 Variable2 Variable3
#3 New Jersey       198      4894

#$`New York`
#         Variable1 Variable2 Variable3
#1         New York       100      5000
#2 New York - Bronx       156     98498
#5  New York Queens     16516    498465

данные

df1 <- structure(list(Variable1 = c("New York", "New York - Bronx", 
"New Jersey", "Detroit", "New York Queens"), Variable2 = c(100L, 
156L, 198L, 1658L, 16516L), Variable3 = c(5000L, 98498L, 4894L, 
 74984L, 498465L)), class = "data.frame", 
 row.names = c(NA, -5L))
...