R 使用条件从现有变量创建新变量
我试图从现有变量中创建一个新变量,并且它满足一个条件R 使用条件从现有变量创建新变量,r,R,我试图从现有变量中创建一个新变量,并且它满足一个条件 startyear endyear ongoingasofyear imposition (dbl) (dbl) (dbl) (dbl) 1 1945 1947 NA 1 2 1946 1949 NA 1 3 1946 1993 NA
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
我想创建一个名为period的变量。我希望它的范围从startyear到endyear(如果有),然后从startyear到Continuous(如果endyear是NA,ongoingasofyear不是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尝试了不同的设置,但到目前为止还没有成功。谢谢 当我们使用“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
当我们使用“tbl_df”时,
dplyr
的一个选项是通过mutate
将列粘贴在一起来创建变量,并且可以使用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
如果endyear和ongoingasofyear都是NA,那么我如何添加它呢?@jo.magi那么我们可以在创建列之前首先对数据集进行子集划分。i、 e.
df1%>%过滤器(!(is.na(endyear)和is.na(ongoingasofyear))%>%突变(制裁期=如果其他(is.na(endyear)和!is.na(ongoingasofyear),粘贴(startyear,“持续”,sep=“-”,粘贴(startyear,endyear,sep=“-”)
如果endyear和ongoingasofyear都是NA,那么我如何添加它来删除它?@jo.magi然后我们可以在创建列之前首先对数据集进行子集划分。例如,df1%>%过滤器(!(is.NA(endyear)&is.NA(ongoingasofyear))%%>%变异(制裁期=如果其他(is.NA(endyear)&!is.NA(ongoingasofyear),粘贴(startyear),“进行中”,sep=“-”,粘贴(开始日期,结束日期,sep=“-”))