我正在尝试从我现有的变量创建一个新的变量,并且它满足一个条件。
startyear endyear ongoingasofyear imposition
(dbl) (dbl) (dbl) (dbl)
1 1945 1947 NA 1
2 1946 1949 NA 1
3 1946 1993 NA 1
4 1946 1960 NA 1
5 1946 1946 NA 1
6 1946 NA 1946 1我想创建一个名为sanctions_period的变量。我希望它的范围从startyear - endyear,当它们可用时,然后范围从startyear -持续,如果endyear是NA,而ongoing then不是NA。
它应该是这样的:
startyear endyear ongoingasofyear imposition sanctions_period
(dbl) (dbl) (dbl) (dbl)
1 1945 1947 NA 1 1945-1947
2 1946 1949 NA 1 1946-1949
3 1946 1993 NA 1 1946-1993
4 1946 1960 NA 1 1946-1960
5 1946 1946 NA 1 1946-1946
6 1946 NA 1946 1 1946-ongoing我该怎么做呢?我尝试过ifelse的不同设置,但到目前为止还没有成功。谢谢!
发布于 2016-08-09 17:05:25
因为我们使用的是'tbl_df',所以使用dplyr的一个选项是使用mutate通过paste将列组合在一起来创建变量,并且可以使用ifelse条件来说明'endyear‘中的NA元素。
library(dplyr)
df1 %>%
mutate(sanctions_period = ifelse(is.na(endyear) & !is.na(ongoingasofyear),
paste(startyear, "ongoing", sep="-"), paste(startyear, endyear, sep="-")))
# startyear endyear ongoingasofyear imposition sanctions_period
#1 1945 1947 NA 1 1945-1947
#2 1946 1949 NA 1 1946-1949
#3 1946 1993 NA 1 1946-1993
#4 1946 1960 NA 1 1946-1960
#5 1946 1946 NA 1 1946-1946
#6 1946 NA 1946 1 1946-ongoinghttps://stackoverflow.com/questions/38846385
复制相似问题