0

I have some data whose cells shuffled for particular entries and I want to set them correctly. see example table.

A     B     C     D
a     i     m
b           j     o
c     k     o
d     l     p

I have tried below code but it is giving error.

mydf[2,2:3]<-mydf[2,3:4]
Sotos
  • 51,121
  • 6
  • 32
  • 66
  • 1
    Welcome to StackOverflow! Please read the info about [how to ask a good question](http://stackoverflow.com/help/how-to-ask) and how to give a [reproducible example](http://stackoverflow.com/questions/5963269). This will make it much easier for others to help you. – Sotos Nov 07 '17 at 09:58

1 Answers1

0

Your code works for me

A <- c("a","b","c","d")
B <- c("i","","k","l")
C <- c("m","j","o","p")
D <- c("","o","","")

df <- data.frame(A,B,C,D, stringsAsFactors = FALSE)

df[2,2:3] <- df[2,3:4]

#remove column D
df <- df[,1:3]

> df
  A B C
1 a i m
2 b j o
3 c k o
4 d l p

But beware, if you're trying this shift on factors you'll get this error:

Warning message: In [<-.factor(*tmp*, iseq, value = 1L) : invalid factor level, NA generated

So you'll have to convert your columns from factor to character first, for example using one of these methods:

df <- data.frame(A,B,C,D)

df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)

df[2,2:3] <- df[2,3:4]

#remove column D
df <- df[,1:3]
f.lechleitner
  • 3,554
  • 1
  • 17
  • 35