使用“镜像”观察扩展数据框

时间:2017-07-11 10:10:58

标签: r dataframe data-manipulation

我的数据框排列如下:

df <- structure(list(name1=  c("A","A","B"), 
                 name2    =  c("B", "C","C"),
                 size     =  c(10,20,30)),.Names=c("name1","name2","size"), 
            row.names     =  c("1", "2", "3"), class =("data.frame"))

我想添加“镜像”观察如下:

df <- structure(list(name1 =  c("A","B","A", "C", "B", "C"), 
                 name2     =  c("B", "A","C", "A", "C", "B"),
                 size      =  c(10,10,20,20,30,30)),.Names=c("name1","name2","size"), 
                 row.names =  c("1", "2", "3", "4", "5", "6"), class =("data.frame"))

非常感谢输入。

2 个答案:

答案 0 :(得分:3)

我们可以分两步完成这项工作,

df1 <- df[rep(rownames(df), each = 2),]
df1[c(FALSE, TRUE), 1:2] <- df1[c(FALSE, TRUE), 2:1]

df1
#    name1 name2 size
#1       A     B   10
#1.1     B     A   10
#2       A     C   20
#2.1     C     A   20
#3       B     C   30
#3.1     C     B   30

答案 1 :(得分:0)

我们可以做到

library(data.table)
rbindlist(list(df, df[c(2:1, 3)]))