заменить несколько ячеек в одной строке df значениями из тех же ячеек в другой строке - PullRequest
0 голосов
/ 08 февраля 2019

Сью, синтаксис очевиден, но он ускользает от меня ... Мне нужно заменить 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"))

Но я не могу понять синтаксис для замены нескольких ячеек назначения одновременно.Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019
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))

Надеюсь, это поможет!

0 голосов
/ 08 февраля 2019

Мы можем переставить строки данных и затем присвоить NA столбцам на основе значений duplicated 'V1'

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
...