Я пытаюсь использовать функцию изменения с условиями для создания нового столбца из существующих данных - PullRequest
1 голос
/ 16 июня 2020

Столбец 1

1 <= <br>2 <= <br>3 =
4 <= <br>5 =
6>
7 <= <br>8 =
9 <= <br>10 =

Столбец 2

1 0,5
2 0,5
3 8
4 0,5
5 1
6 32
7 0,5
8 1
9 0,5
10 8

Мне нужен столбец 3.

Я знаю, что это не сработает в R, но это то, что я хочу получить.

mutate(if(col1 = "<="){
  start <- 0
} else if(col1 = "="){
  start <- col2/2
} else if(col1 = ">"){
  start <- paste(col2)
})

Данные:

structure(list(`col1` = c("<=", "<=", "=", "<=", "=", ">"
), col2 = c("0.5", "0.5", "8", "0.5", "1", "32")), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

1 Ответ

2 голосов
/ 16 июня 2020

С поправкой на dput


library(dplyr)

mydata %>% mutate(start = case_when(
  col1 == "<=" ~ 0,
  col1 == "=" ~ as.numeric(col2) / 2,
  col1 == ">" ~ as.numeric(col2),
  TRUE ~ NA_real_
))


# A tibble: 6 x 3
  col1  col2  start
  <chr> <chr> <dbl>
1 <=    0.5     0  
2 <=    0.5     0  
3 =     8       4  
4 <=    0.5     0  
5 =     1       0.5
6 >     32     32  
...