代码之家  ›  专栏  ›  技术社区  ›  Emilio M. Bruna

用另一行中相同单元格的值替换df中一行中的多个单元格

  •  0
  • Emilio M. Bruna  · 技术社区  · 7 年前

    我很抱歉,语法是很明显的,但我想不通。。。 我需要用另一行的相同单元格替换数据帧中的3个单元格,然后用NAs替换源单元格,例如,我需要将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
    

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Rex    7 年前
    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
  •  1
  •   akrun    7 年前

    duplicated

    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
    
    推荐文章