Я пытаюсь добавить еще один столбец для оценки на основе оценки из другого столбца - PullRequest
0 голосов
/ 21 ноября 2018

Это код, который я пробовал.Я попытался создать функцию, а затем использовать ее.

best <- rest_tidy %>%
  mutate(
    graded = {
      if (rest_tidy$score < 14){
        print("A")
      }  if (between(rest_tidy$score, 14, 27)){
        print("B")
      }
      if (rest_tidy$score > 27){
        print("C")
      }
    }
  )

Однако я получаю эту ошибку

Error in mutate_impl(.data, dots) : Column `graded` is of unsupported 
type NULL

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

С tidyverse:

rest_tidy=data.frame(score=c(1,15,25,35,27,NA))
 rest_tidy %>%
   mutate(
     graded=case_when(score<14~"A",
                      score<=27~"B",
                      score>27~"C",
                      T~"Other"))
  score graded
1     1      A
2    15      B
3    25      B
4    35      C
5    27      B
6    NA  Other
0 голосов
/ 21 ноября 2018

Хотя для таких сценариев лучше использовать что-то вроде case_when или if_else, просто для забавы, пара модификаций вашей попытки действительно работает.

rest_tidy=data.frame(score=c(1,15,25,35,27,NA))

best <- rest_tidy %>%
  rowwise() %>%
  mutate(
    graded = {
      if(is.na(score)) print("D")
      else if(score < 14) print("A")
          else if(between(score, 14, 27)) print("B")
            else print("C")
    }
  )

приводит к best:

  score graded
  <dbl> <chr> 
1     1 A     
2    15 B     
3    25 B     
4    35 C     
5    27 B     
6    NA D 

требовались только условия для обработки na случаев и правильная вложенность для запуска нескольких if случаев.Наконец, rowwise обеспечивает оценку каждого элемента, а не только первого элемента столбца.

Опять же, этот подход может работать, но не рекомендуется.

0 голосов
/ 21 ноября 2018
rest_tidy <- as.data.frame(c(14,50,70,80,100,5,22))
colnames(rest_tidy) <- c("score")

rest_tidy$best <- ifelse(rest_tidy$score < 14,"A",ifelse((rest_tidy$score >= 14 & rest_tidy$score <27),"B","C"))

это даст вам необходимый вывод

...