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

时间:2019-02-08 02:29:56

标签: r dataframe dplyr tidyr

我要说语法很明显,但这使我难以理解... 我需要用另一行中的相同单元格替换数据帧中的3个单元格,然后用NA替换源单元格,例如,我需要将df转换为df2。

sudo a2dismod php7.0
sudo a2enmod php7.2
sudo systemctl restart apache2

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

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

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

2 个答案:

答案 0 :(得分:1)

我们可以重新排列数据的行,然后根据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

答案 1 :(得分: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))

希望这会有所帮助!