0

我有一个数据框,只有一列,我想通过只选择某些行将它变成两列,这里......让我告诉你

我想从这里出发

       V1   
1    one
2    two
3    &&three
4    four
5    &&five
6    six

对此

     V1      V2
1    one     NA
2    two     three
3    four    five
4    six     NA

因此,具有 a 的那些&&被放置在第二列,在上一行的右侧(希望这是有道理的)。有什么办法可以做到这一点吗?

4

1 回答 1

4

这是我的方法:

读入数据:

dat <- read.table(text="       V1   
1    one
2    two
3    &&three
4    four
5    &&five
6    six", head=T, stringsAsFactors = FALSE)

重塑:

j <- grep("&&", dat$V1)                                 #find && rows
l <- j-1                                                #find rows above && rows
dat$V2 <- rep(NA, nrow(dat))                            #create NA vector
dat$V2[l] <- gsub("&&", "", dat[grep("&&", dat$V1), 1]) #see what it does :)
dat2 <- dat[-j, ]                                       #get rid of the && rows
rownames(dat2) <- 1:nrow(dat2)                          #rename rows

产生:

    V1    V2
1  one  <NA>
2  two three
3 four  five
4  six  <NA>
于 2012-04-26T15:20:21.323 回答