У меня есть фрейм данных "dat" с коэффициентом "письма" (который имеет три уровня "A", "B" и "C") и числовой вектор "числа" (со значениями от 1 по 80):
dat <- data.frame(letters = sample(LETTERS[1:3], 15, replace = TRUE),
numbers = sample(80, 15, replace = TRUE))
Я хочу создать таблицу непредвиденных обстоятельств, в которой сгруппированы уровни «B» и «C», а значения сгруппированы на уровни выше и ниже 40,5.
То есть итоговая таблица непредвиденных обстоятельств должна выглядеть так (разумеется, с разными частотами):
> table(...)
numbers
letters 1:40 41:80
A 2 3
B + C 4 6
Я создал эту таблицу, сначала добавив два новых столбца в свой фрейм данных, а затем создав таблицу из них:
dat$two.letters <- "A"
dat[dat$letters != "A", ]$two.letters <- "B + C"
dat$two.letters <- as.factor(dat$two.letters)
dat$two.numbers <- "1:40"
dat[dat$numbers > 40, ]$two.numbers <- "41:80"
dat$two.numbers <- as.factor(dat$two.numbers)
table(dat$two.letters, dat$two.numbers)
1:40 41:80
A 3 1
B + C 6 5
Но я хочу создать эту таблицу, без введения новых столбцов или создания отдельного фрейма данных. Скорее я хотел бы сгруппировать значения в команде table()
.
Это возможно?
with(dat, table(letters == 'A', numbers <= 40))
- person MichaelChirico   schedule 19.06.2017