【发布时间】:2020-10-19 09:44:14
【问题描述】:
我有 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。
非常感谢您的帮助!
【问题讨论】:
-
如果您使用的是
-
我使用版本 1.1.383 – © 2009-2017 RStudio, Inc. 我相信数据从一开始就在因子中。不会没事吧?
-
df和df2的行数不同。你如何比较它们df$R1 == df2$R1? -
嗨@RonakShah 我不完全确定,但我们可以先离开联接(df),然后逐个解决条件。不会有帮助吗?