Как создать подмножество фрейма данных в R (4 примера)


Вы можете использовать следующий базовый синтаксис для подмножества фрейма данных в R:

df[rows, columns]

В следующих примерах показано, как использовать этот синтаксис на практике со следующим фреймом данных:

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'C'),
 points=c(77, 81, 89, 83, 99, 92, 97),
 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

 team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 C 97 14

Пример 1: подмножество фрейма данных путем выбора столбцов

В следующем коде показано, как подмножить фрейм данных по именам столбцов:

#select all rows for columns 'team' and 'assists'
df[ , c('team', 'assists')]

 team assists
1 A 19
2 A 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

Мы также можем подмножить фрейм данных значениями индекса столбца:

#select all rows for columns 1 and 3
df[ , c(1, 3)]

 team assists
1 A 19
2 A 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

Пример 2: подмножество фрейма данных путем исключения столбцов

В следующем коде показано, как создать подмножество фрейма данных, исключив определенные имена столбцов:

#define columns to exclude
cols <- names(df) %in% c('points')

#exclude points column
df[!cols]

 team assists
1 A 19
2 A 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

Мы также можем исключить столбцы, используя значения индекса.

#exclude column 2
df[ , c(-2)]

 team assists
1 A 19
2 A 22
3 B 29
4 B 15
5 C 32
6 C 39
7 C 14

Пример 3: Подмножество фрейма данных путем выбора строк

В следующем коде показано, как подмножить фрейм данных по определенным строкам:

#select rows 1, 5, and 7
df[c(1, 5, 7), ]

 team points assists
1 A 77 19
5 C 99 32
7 C 97 14

Мы также можем подмножить фрейм данных, выбрав диапазон строк:

#select rows 1 through 5
df[1:5, ]

 team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32

Пример 4: Фрейм данных подмножества на основе условий

В следующем коде показано, как использовать функцию subset() для выбора строк и столбцов, соответствующих определенным условиям:

#select rows where points is greater than 90
subset(df, points > 90)

 team points assists
5 C 99 32
6 C 92 39
7 C 97 14

Мы также можем использовать | ("или") для выбора строк, которые удовлетворяют одному из нескольких условий:

#select rows where points is greater than 90 or less than 80
subset(df, points > 90 | points < 80)

 team points assists
1 A 77 19
5 C 99 32
6 C 92 39
7 C 97 14

Мы также можем использовать оператор & («и») для выбора строк, соответствующих нескольким условиям:

#select rows where points is greater than 90 *and* assists is greater than 30
subset(df, points > 90 & assists > 30)

 team points assists
5 C 99 32
6 C 92 39

Мы также можем использовать аргумент select для выбора только определенных столбцов на основе условия:

#select rows where points is greater than 90 and only show 'team' column
subset(df, points > 90, select=c('team'))

 team
5 C
6 C
7 C

Дополнительные ресурсы

Как удалить строки из фрейма данных в R на основе условия
Как заменить значения во фрейме данных в R
Как удалить столбцы из фрейма данных в R