Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用条件从现有变量创建新变量_R - Fatal编程技术网

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=“-”))