Как мне разделить столбец чисел на основе числовых значений в r?

#r #dplyr

#r #dplyr

Вопрос:

пытаюсь найти правильный код для использования, чтобы попытаться разделить столбец тестов на два разных столбца с именами Test1 и Test2. Я пытался использовать отдельную функцию, подобную so, но всегда получал два столбца, но столбец ‘test2’ — это просто na.

 Tests
1
1
2
2
1
2
1
2
1
  
 code used
separate(Tests, c('test1', 'test2'))

  

я хочу, чтобы это выглядело так. Не уверен, что у меня неправильная функция, если мне нужно добавить что-то еще в функцию, чтобы столбец разделялся так, как я хочу. Любой совет поможет 🙂 спасибо!

 test1  test2
1       2
1       2
1       2
1       2
1       2
  

Ответ №1:

Я предполагаю, что ваши тесты представляют собой простой вектор (предполагаю, что они технически называются атомарными векторами, но я могу ошибаться):

  Tests <- c(1,1,2,2,1,2,1,2,1)
  

Вы могли бы просто отфильтровать в соответствии с условием и привязать результат к новому data.frame (если Tests — это data.frame со столбцом «Тесты», просто поставьте «,» перед каждым «]»:

  as.data.frame(cbind(Test1 = Tests[Tests == 1],  Test2 = Tests[Tests == 2]))
  

Но, как вы увидите, R выдает вам предупреждение, потому что единиц больше, чем 2, и здесь следует обратить внимание на очень важную вещь: R будет перерабатывать более короткий вектор для заполнения data.frame, потому что в data.frame все столбцы должны быть одинаковой длины!

Итак, то, что вы хотите сделать, опасно, поскольку вы, скорее всего, не можете быть уверены, что все будет иметь одинаковую длину. Возможно, повторное использование нежелательно, поэтому имейте это в виду.