#r #dataframe #matrix
Вопрос:
Как создать двоичный вектор (названный как group
) для пациентов, у которых верхняя 25% экспрессия гена кодируется как 1, а все остальные пациенты кодируются как 0?
> dput(head(dat, 20))
c(14.0217647549219, 4.38634192539018, 11.230612647966, 13.5882888840484,
10.2699597878478, 8.09562488203986, 14.1224780341231, 10.4488388145038,
12.2745444001468, 9.09203349810451, 14.3513862469323, 11.5782968747535,
13.6411144041398, 9.79892114560863, 11.1019611651618, 12.5146158084875,
12.643970834391, 1.09720624597437, 5.83979838350692, 11.1604484254692
)
Ответ №1:
Мы могли бы использовать quantile
для создания группы
dat$group <- with(dat, (V1 >= quantile(V1, 0.75)))
dat$group
[1] 0 1 0 0 0 0 1 0
Обновить
Основываясь на комментариях, «дата» OP-это vector
dat <- c(14.0217647549219, 4.38634192539018, 11.230612647966, 13.5882888840484, 10.2699597878478, 8.09562488203986, 14.1224780341231, 10.4488388145038, 12.2745444001468, 9.09203349810451, 14.3513862469323, 11.5782968747535, 13.6411144041398, 9.79892114560863, 11.1019611651618, 12.5146158084875, 12.643970834391, 1.09720624597437, 5.83979838350692, 11.1604484254692 )
Таким образом, мы можем непосредственно применить quantile
на объекте
group <- (dat >= quantile(dat, 0.75))
out <- data.frame(V1 = dat, group)
-уптут
out
V1 group
1 14.021765 1
2 4.386342 0
3 11.230613 0
4 13.588289 1
5 10.269960 0
6 8.095625 0
7 14.122478 1
8 10.448839 0
9 12.274544 0
10 9.092033 0
11 14.351386 1
12 11.578297 0
13 13.641114 1
14 9.798921 0
15 11.101961 0
16 12.514616 0
17 12.643971 0
18 1.097206 0
19 5.839798 0
20 11.160448 0
данные
dat <- structure(list(V1 = c(4.124, 5.215, 1.368, 0.325, 0.368, 3.653,
36.12, 0.124)), class = "data.frame", row.names = c("1", "2",
"3", "4", "5", "6", "7", "8"))
Комментарии:
1. У меня большой набор данных. Как мне создать фрейм данных?
2. @melil Извините, я не понял вашего вопроса. Зачем вам нужно создавать фрейм данных? Вы уже привели пример, и код с
quantile
может работать с векторами, т. е. с извлеченными столбцами.3. @melil Вы имели в виду, что у вас есть какой-то файл, и вы хотите прочитать данные? В этом вы можете использовать
dat <- read.csv("yourfile.csv")
4. Извините за путаницу. Я имею в виду ту
dat <- structure(...)
часть вашего ответа.5. @melil, который просто использует
dput(dat)
его, дает структуру данных, так что, если вы скопируете код в сообщении и выполните, у нас будет та же структура данных. Обычно, когда люди показывают свои данные (как вы показали), могут возникнуть некоторые проблемы, т. Е., возможно, ваши столбцы данных имеют разные типы, и какой-то код не будет работать. Сdput
помощью , либо вы, либо я, либо кто угодно может использовать одни и те же данные с одинаковой структурой классов