簡體   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