2 개의 데이터 프레임이 있습니다.
R1 <- c("15515","5156","65656","1566", "2857")
RC <- c("A","X","B","Z","A")
R2 <- c("515","5156.11-","415-","1455-","886")
df <- data.frame(R1,RC,R2)
R1 <- c("15515","8888","65656","1566")
R2 <- c("111","222","333","444")
R3 <- c("999","888","777","666")
df2 <- data.frame(R1,R2,R3)
먼저 R1에서 조인 df를 남겨야합니다.
달성 할 조건,
1. if df$R1 != df2$R1
df$R2 <- df$R2 (As it is in df)
2. if df$R1 == df2$R1 & (df$RC == A | df$RC == B) then,
df$R2 <- df2$R2
3. if df$R1 == df2$R1 & (df$RC != A | df$RC != B) then,
df$R2 <- df2$R3
출력은 다음과 같을 수 있습니다.
R1 RC R2
15515 A 111
5156 X 5156.11-
65656 B 333
1566 Z 666
2857 A 886
아래 코드를 실행 해 보았습니다.
df$R1[which(df$R1 == df2$R1) & which((df$RC == 'A' | df$RC == 'B'))] <- df2$R2[which(df$R1 == df2$R1) & which((df$RC == 'A' | df$RC == 'B'))]
df$R1[which(df$R1 == df2$R1) & which((df$RC != 'A' | df$RC != 'B'))] <- df2$R3[which(df$R1 == df2$R1) & which((df$RC != 'A' | df$RC != 'B'))]
그러나 나는 이것으로 조건 1을 잃었습니다.
귀하의 친절한 도움에 감사드립니다!
on에 가입 df
하고 조건을 적용 할 수 있습니다 .df2
R1
case_when
library(dplyr)
df %>%
left_join(df2, by = 'R1') %>%
mutate(R2 = case_when(is.na(R2.y) ~ R2.x,
RC %in% c('A', 'B') ~ R2.y,
TRUE ~ R3)) %>%
select(names(df))
# R1 RC R2
#1 15515 A 111
#2 5156 X 5156.11-
#3 65656 B 333
#4 1566 Z 666
#5 2857 A 886
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다