我有一个如下所示的数据框。我想基于某些条件,根据现有列推导出一个新列。
我希望使用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
答案 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))