根据现有列的条件派生或变异新列

时间:2018-01-27 09:16:23

标签: r dataframe dplyr mutate

我有一个如下所示的数据框。我想基于某些条件,根据现有列推导出一个新列。

我希望使用dplyr包来实现此目的。

例如:每当结果值大于1时,则将结果推导为1,否则为0.

datetime    outcome
12/1/2017   1
12/2/2017   1
12/3/2017   1
12/4/2017   2
12/5/2017   1
12/6/2017   1
12/7/2017   1

带派生变量的预期数据框:

datetime    outcome result
12/1/2017         1     0
12/2/2017         1     0
12/3/2017         1     0
12/4/2017         2     1
12/5/2017         1     0
12/6/2017         1     0
12/7/2017         1     0

2 个答案:

答案 0 :(得分:2)

一种方式如下。我调用了您的数据foo。您想要使用逻辑检查来检查每个值是否大于1。 as.numeric()将TRUE转换为1,将FALSE转换为0.

library(dplyr)

foo %>%
mutate(check = as.numeric(outcome > 1)) 

   datetime outcome check
1 12/1/2017       1     0
2 12/2/2017       1     0
3 12/3/2017       1     0
4 12/4/2017       2     1
5 12/5/2017       1     0
6 12/6/2017       1     0
7 12/7/2017       1     0

数据

foo <- structure(list(datetime = structure(1:7, .Label = c("12/1/2017", 
"12/2/2017", "12/3/2017", "12/4/2017", "12/5/2017", "12/6/2017", 
"12/7/2017"), class = "factor"), outcome = c(1L, 1L, 1L, 2L, 
1L, 1L, 1L)), .Names = c("datetime", "outcome"), class = "data.frame", 
row.names = c(NA, 
-7L))

答案 1 :(得分:1)

尝试了一些选项之后,这是一个非常简单的选项。

> mutate(df, v1 = ifelse( outcome > 1, 1, 0))