Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 复制粘贴数据帧中的列值_R_Dataframe - Fatal编程技术网

R 复制粘贴数据帧中的列值

R 复制粘贴数据帧中的列值,r,dataframe,R,Dataframe,我有一个看起来像这样的数据框: TRUE x_value1 x_value2 y_value1 y_value2 x_id y_id 0 1 4 11 14 1 7 1 2 5 12 15 2 8 0 3 6

我有一个看起来像这样的数据框:

TRUE    x_value1    x_value2    y_value1    y_value2    x_id    y_id
0           1            4        11             14      1       7
1           2            5        12             15      2       8
0           3            6        13             16      3       9
 TRUE   x_value1    x_value2    y_value1    y_value2    x_id    y_id
    0           1            4        11             14      1       7
    1           2            5        12             15      2       8
    0           3            6        13             16      3       9
    0           11           14       1              4       7       1
    1           12           15       2              5       8       2
    0           13           16       3              6       9       3
我想在这个数据框中添加行,并切换x和y,这样在第4行中x_value1=y_value1和x_id=y_id和y_value1=x_value1…等等

像这样:

TRUE    x_value1    x_value2    y_value1    y_value2    x_id    y_id
0           1            4        11             14      1       7
1           2            5        12             15      2       8
0           3            6        13             16      3       9
 TRUE   x_value1    x_value2    y_value1    y_value2    x_id    y_id
    0           1            4        11             14      1       7
    1           2            5        12             15      2       8
    0           3            6        13             16      3       9
    0           11           14       1              4       7       1
    1           12           15       2              5       8       2
    0           13           16       3              6       9       3
我可以用for循环来完成这项工作,但这需要很长时间

e、 g

所需(上表二):


如果dd是原始数据帧,则可以尝试:

dd2 <- cbind(dd[1], dd[4:5], dd[2:3],dd[7:6])

names(dd2) <- names(dd)

dd <- rbind(dd, dd2)
dd2更“程序化”地执行:使用grep并为列名添加模式:

> grep("y_", names(dat))
[1] 4 5 7
> grep("x_", names(dat))
[1] 2 3 6

dat2 <- dat
# Replace all the dat2 "y_"-names with "x_"-names
colnames(dat2)[grep("y_", colnames(dat))] <- 
                    colnames(dat)[grep("x_", colnames(dat))]
# Replace alldat2  the "x_"-names with "y_"-names
colnames(dat2)[grep("x_", colnames(dat))] <- 
                     colnames(dat)[grep("y_", colnames(dat))]
colnames(dat2)
#[1] "TRUE."    "y_value1" "y_value2" "x_value1" "x_value2" "y_id"    
#[7] "x_id"    

rbind(dat,dat2)
#-----------------
  TRUE. x_value1 x_value2 y_value1 y_value2 x_id y_id
1     0        1        4       11       14    1    7
2     1        2        5       12       15    2    8
3     0        3        6       13       16    3    9
4     0       11       14        1        4    7    1
5     1       12       15        2        5    8    2
6     0       13       16        3        6    9    3
>grep(“y_”,名称(dat))
[1] 4 5 7
>grep(“x_uz”,名称(dat))
[1] 2 3 6

dat2与其他人建议的重新排列数据帧不同,您可以只重命名列,然后让rbind负责匹配顺序:

dat2 <- dat
colnames (dat2) <- colnames (dat) [c (1, 4, 5, 2, 3, 7, 6)]

dat3 <- rbind (dat, dat2)

dat2不是一个坏主意,但是实现有缺陷。需要修复重命名的索引。在这之后,我认为不需要pkg:reforme,因为base::rbind将匹配列。谢谢。已编辑以修复这两个问题。它们仍然与请求的内容不匹配。Dang。现在应该修好了。
dat2 <- dat
colnames (dat2) <- colnames (dat) [c (1, 4, 5, 2, 3, 7, 6)]

dat3 <- rbind (dat, dat2)
dat2 <- dat

newnames <- gsub ("(x|y)_", "\\1\\1_", colnames(dat))
newnames <- gsub ("xx_", "y_", newnames)
newnames <- gsub ("yy_", "x_", newnames)
colnames(dat2) <- newnames

dat3 <- rbind (dat, dat2)