Как добавить столбец tibble, назначающий значения для групп значений из другой переменной? - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь создать новый столбец в моей таблице, который назначает одно значение для группы уровней факторов в другом столбце. Например, в таблице, где переменная «время» имеет значения «t1», «t2», «t3», «t4», «t5» и «t6», как я могу создать переменную B, которая классифицирует эти значения как«X», если A = t1, t2 или t3, или «Y», если A = t4, t5 или t6.

Я работаю с Tidyverse, и, поскольку это для домашней задачи, я предполагаю, чтоэто должно быть выполнимо с dplyr (все другие проблемы в наборе требуют deplyr). Я попытался использовать ветвление if-else, как в приведенном ниже коде, но я получаю ошибку "сравнение (1) возможно только для атомарных и списочных типов"

install.packages("tidyverse")
library("tidyverse")

#data originally came from a csv file but I've reproduced a similar example tibble here:

t <- c("t1", "t2", "t3", "t4", "t5", "t6")
tb <- tibble(x = 1:20, time = sample(t, length(x), replace = TRUE))

if(time == c("t1", "t2", "t3")) {
    tb <- mutate(tb, B = "X")
  } else {
    tb <- mutate(tb, B = "Y")
  }

Я довольно новичок в R, поэтомуЯ понятия не имею, что нужно изменить, чтобы избавиться от ошибки (хотя я уверен, что в этом коде есть и другие проблемы). Я просто хочу закончить тем же тибблом, но с дополнительным столбцом B, где B = X для всех случаев, когда время равно t1: t3 и B = Y в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...