我正在尝试从现有变量创建一个新变量,并且它满足条件。
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
我想创建一个名为penal_period的变量。我希望它的范围从年初到年底,当有可用时,然后是年初的范围 - 如果年终为NA且正在进行的年份不是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不同的设置,但到目前为止还没有成功。谢谢!
答案 0 :(得分:0)
由于我们正在使用' 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-ongoing