【问题标题】:replace multiple cells in one in one row of a df with values from same cells in another row用另一行中相同单元格的值替换df的一行中的多个单元格
【发布时间】:2019-02-08 02:29:55
【问题描述】:

我认为语法很明显,但它让我无法理解... 我需要用另一行中的相同单元格替换数据框中的 3 个单元格,然后用 NA 替换源单元格,例如,我需要将 df 转换为 df2。

V1<-c("A","A","E")
V2<-c("B","D","F")
V3<-c(1,3,5)
V4<-c(2,4,6)
df<-data.frame(V1,V2,V3,V4)
df
V12<-c("A","A","E")
V22<<-c("D",NA,"F")
V32<<-c(3,NA,5)
V42<-c(4,NA,6)
df2<-data.frame(V12,V22,V32,V42)
df2

我可以使用 dplyr 一次完成一个单元格

df %>% mutate(V2=replace(V2, V1=="A" & V2=="B","D"))

但我无法弄清楚同时替换多个目标单元格的语法。有人能指出我正确的方向吗?

【问题讨论】:

    标签: r dataframe dplyr tidyr


    【解决方案1】:
    df2 <- df
    df2[c(1,2), 2:4] <- rbind(df[2, 2:4], rep(NA, 3))
    

    那应该为你做。如果您不想创建新的数据框并节省内存空间,那么,

    df[c(1,2), 2:4] <- rbind(df[2, 2:4], rep(NA, 3))
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我们可以重新排列数据的行,然后根据duplicated'V1'的值将NA分配给列

      dfN <- df[c(2:1, 3),]
      dfN[duplicated(dfN$V1), 2:4] <- NA
      row.names(dfN) <- NULL
      dfN
      #  V1   V2 V3 V4
      #1  A    D  3  4
      #2  A <NA> NA NA
      #3  E    F  5  6
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多