繁体   English   中英

根据条件用另一个数据框替换数据框列 - R

[英]Replace Dataframe column with another dataframe based on conditions - R

我遇到了一些麻烦,也许这里有人可以帮助我!

我有一个包含三列(ID1、ID2 和 VALUE1)的数据框。 此外,我还有另一个数据框,它遵循相同的配置,但某些 ID1 和 ID2 具有另一个值。 我正在尝试仅基于多个条件将 dataframe1 中 VALUE1 列上的值替换为 dataframe2 中 VALUE1 列中的值。 这意味着,当 ID1 和 ID2 满足某些条件“x”和“y”时,则替换数据帧 2 中的这些值。

下面我附上一个例子。 想法是使用 df1,当 ID1=5 且 ID2<100 时,从 df2 替换 VALUE1 的值。 df3 是预期结果(请注意,我想保留 df1 中的所有列,仅在条件满足时替换值)

例子:

df1 <- data.frame(ID1=c(1,2,3,4,5,5,5,4,3,5), 
                    ID2 = c(10,20,30,40,50,150,200,99,10,25), 
                    VALUE1 = c(100,200,300,400,200, 100,200,40,150,70),
                    NAME = c("Juan", "Rodrigo","Pedro","Lucas","d", "e","f","g","x","a"),
                    SURNAME = c("perez","jones","bla","lopez","martinez","rodriguez","jerez","dieguez","gimenez","mendez"))
     
df2 <- data.frame(ID1=c(5,5,5,5), 
                    ID2 = c(50,150,200,25), 
                    VALUE1 = c(40,30,180,200))
                    
df3 <- data.frame(ID1=c(1,2,3,4,5,5,5,4,3,5), 
                    ID2 = c(10,20,30,40,50,150,200,99,10,25), 
                    VALUE1 = c(100,200,300,400,50, 100,200,40,150,200),
                    NAME = c("Juan", "Rodrigo","Pedro","Lucas","d", "e","f","g","x","a"),
                    SURNAME = c("perez","jones","bla","lopez","martinez","rodriguez","jerez","dieguez","gimenez","mendez"))

作为图像的示例

我尝试了一些诸如合并、if、ifelse 之类的事情,但我没有达到结果。 我想知道是否有人可以帮助我!

提前致谢!

我认为您可以使用以下解决方案:

library(dplyr)

df1 %>%
  left_join(df2, by = c("ID1", "ID2")) %>%
  mutate(VALUE1.x = ifelse(ID1 == 5 & ID2 < 100, VALUE1.y, VALUE1.x)) %>%
  select(-VALUE1.y) %>%
  rename_with(~ sub("\\.x", "", .), contains(".x")) 

   ID1 ID2 VALUE1    NAME   SURNAME
1    1  10    100    Juan     perez
2    2  20    200 Rodrigo     jones
3    3  30    300   Pedro       bla
4    4  40    400   Lucas     lopez
5    5  50     40       d  martinez
6    5 150    100       e rodriguez
7    5 200    200       f     jerez
8    4  99     40       g   dieguez
9    3  10    150       x   gimenez
10   5  25    200       a    mendez

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM