R- Как мне выбрать строки, указанные в выводе sample()?

Я хочу провести предварительный факторный анализ, а затем подтверждающий факторный анализ по 415 субъектам. Я хочу разделить свою выборку на две более или менее равные выборки, чтобы я мог выполнить EFA по 208 субъектам и CFA по 207 субъектам.

Я использую функцию sample():

a<-sample(1:415,208,replace=F)

sort(a)

b<-sample(1:415,207,replace=F)

sort(b)

И я получаю разные значения.

Я хочу присвоить номер 1 в столбце «AFE.AFC» моего набора данных для всех 208 участников, упомянутых в «а», и номер 2 в том же столбце для 207 участников, которые упомянуты в «б».

Вы знаете какую-нибудь формулу, которая могла бы это сделать?

Спасибо за помощь!


person Natalija Plasonja    schedule 12.05.2017    source источник


Ответы (1)


Таким образом, вы на самом деле не хотите использовать sample дважды, потому что вы, скорее всего, получите некоторые числа, которые отображаются в обоих. Предполагая, что ваши данные находятся в кадре данных с именем df, вы можете сделать что-то вроде этого

df$AFE.AFC <- 2 # this creates a column called AFE.AFC where all the values are 2
a.index <- sample(1:415, 208, replace = FALSE) # randomly samples 208 numbers from 1-415
df$AFE.AFC[a.index] <- 1 # this changes the value in the column category and changes it to 1 if it's the row number it's in is in AFE.AFC

Хитрость в 3-й и последней строке. Если числа 5, 21, 103, 4, ... находятся в a.index, то 5-е, 21-е, 103-е и т. д. четвертые значения df$AFE.AFC будут изменены с 1 на 2.

person beigel    schedule 12.05.2017
comment
Большое спасибо за ваш ответ! - person Natalija Plasonja; 16.05.2017