2016-08-09 4 views
1

기존 변수에서 새 변수를 만들려고하고 조건을 만족합니다.조건이있는 기존 변수에서 새 변수 만들기

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라는 변수를 만들고 싶습니다. 시작일부터 시작하여 끝날 때까지 범위 - 끝나는 시점이 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와는 다른 설정을 시도했지만 지금까지 성공하지 못했습니다. 감사! 우리는 'tbl_df'를 사용하는 것처럼

답변

0

dplyr 하나의 옵션은 함께 열을 보내고 paste 의해 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 
+1

저에게 도움이되었습니다. 감사합니다. –

+0

endyear와 ongoingasofyear가 모두 NA가 아닌 경우 어떻게 추가 할 수 있습니까? –

+0

@ jo.magi 그런 다음 먼저 열을 만들기 전에 데이터 집합의 하위 집합을 만들 수 있습니다. %> % mutate (sanctions_period = if_else (is.na (endyear) &! is.na (ongoingasofyear), 붙여 넣기 (df1 %> % filter (! sep = "-"), 붙여 넣기 (startyear, endyear, sep = "-")))' – akrun

관련 문제