【问题标题】:How to merge two dataset with unequal rows depending on dummy value in R如何根据R中的虚拟值合并具有不相等行的两个数据集
【发布时间】:2021-12-14 03:40:29
【问题描述】:

我有两个具有不相等行的 R 数据框,需要根据列中的虚拟值进行合并。

x <- c(3,4,5,3,5,1,4,5)
y <- c(0,0,1,0,1,1,0,0)
df1 <- data.frame(x,y)

  x y
1 3 0
2 4 0
3 5 1
4 3 0
5 5 1
6 1 1
7 4 0

z <- c(7,8,9)
y <- c(1,1,1)
df2 <- data.frame(a,b)

  z y
1 7 1
2 8 1
3 9 1

是否可以在不使用循环的情况下将两者合并以使生成的数据帧如下?

  x y z
1 3 0 0
2 4 0 0
3 5 1 7
4 3 0 0
5 5 1 8
6 1 1 9
7 4 0 0

当y中出现第一个值1时,将z的值设置为df2中z的第一个值。

【问题讨论】:

    标签: r dataframe merge


    【解决方案1】:

    你可以试试

    library(dplyr)
    
    df1 <-df1 %>%
      group_by(y) %>%
      mutate(n = 1:n())
    
    df2 <- df2 %>%
      group_by(y) %>%
      mutate(n = 1:n())
    df1 %>%
      left_join(df2, by =c("n", "y")) %>%
      mutate(z = replace_na(z, 0)) %>%
      select(-n)
      
          x     y     z
      <dbl> <dbl> <dbl>
    1     3     0     0
    2     4     0     0
    3     5     1     7
    4     3     0     0
    5     5     1     8
    6     1     1     9
    7     4     0     0
    8     5     0     0
    

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 2015-09-04
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多