Создайте переменную в соответствии с порядком, указав значение c другой переменной - PullRequest
1 голос
/ 29 апреля 2020

У меня есть кадр данных, похожий на этот (хотя и более сложный):

id <- rep(1:2, each = 4)
Cond <- rep(c("test", "test","form", "form", "form", "form", "test","test"))

df <- data.frame(id,Cond)

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

 id Cond order
  1 test test-form
  1 test test-form
  1 form test-form
  1 form test-form
  2 form form-test
  2 form form-test
  2 test form-test
  2 test form-test

Любая помощь будет высоко ценится

1 Ответ

1 голос
/ 29 апреля 2020

Мы можем проверить первый элемент каждого 'id', чтобы paste 'form' или 'test'

library(dplyr)
library(stringr)
df %>% 
    group_by(id) %>%
    mutate(order = str_c(first(Cond), setdiff(c('form', 'test'), 
               first(Cond)), sep='-'))
# A tibble: 8 x 3
# Groups:   id [2]
#     id Cond  order    
#  <int> <fct> <chr>    
#1     1 test  test-form
#2     1 test  test-form
#3     1 form  test-form
#4     1 form  test-form
#5     2 form  form-test
#6     2 form  form-test
#7     2 test  form-test
#8     2 test  form-test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...