使用R中另一个数据帧的值在数据帧中创建列

使用R中另一个数据帧的值在数据帧中创建列,r,R,我有一个具有以下结构的数据帧: V1 V2 V3 V4 V5 V6 V7 V8 A B A B B A B B 它只有一行,每列有一个字母。我想把这些字母,两个接两个,插入另一个数据框,如下所示: V1 V2 V3 X AB F Y AB G Z BA H W BB I 我应该如何进行?也许把第一个数据帧变成一个向量 提前谢谢 我不知道V1和V3来自哪里,但下面的代码可以帮助您生成V2 给 [,1] 1 "AB" 2 "AB" 3 "BA

我有一个具有以下结构的数据帧:

V1 V2 V3 V4 V5 V6 V7 V8
A B A B B A B B
它只有一行,每列有一个字母。我想把这些字母,两个接两个,插入另一个数据框,如下所示:

V1 V2 V3
X AB F
Y AB G
Z BA H
W BB I
我应该如何进行?也许把第一个数据帧变成一个向量

提前谢谢

我不知道V1和V3来自哪里,但下面的代码可以帮助您生成V2

  [,1]
1 "AB"
2 "AB"
3 "BA"
4 "BB"
资料

我不知道V1和V3来自哪里,但下面的代码可以帮助您生成V2

  [,1]
1 "AB"
2 "AB"
3 "BA"
4 "BB"
资料


这里有一个更冗长的方法

xy <- structure(list(V1 = "A", V2 = "B", V3 = "A", V4 = "B", V5 = "B", 
               V6 = "A", V7 = "B", V8 = "B"), class = "data.frame", row.names = c(NA,
                                                                                  -1L))
xy <- unlist(xy)  # split doesn't work on data.frames

# Make sure that length of xy is divisible by 2.
stopifnot((length(xy) %% 2) == 0)

tosplit <- rep(1:(length(xy) / 2), each = 2)
tosplit <- factor(tosplit)

xy <- split(xy, f = tosplit)
xy <- lapply(xy, FUN = paste, collapse = "")
xy <- unlist(xy)
xy

   1    2    3    4 
"AB" "AB" "BA" "BB" 

这可以很容易地操纵到您选择的data.frame中。

这里有一种更冗长的方法

xy <- structure(list(V1 = "A", V2 = "B", V3 = "A", V4 = "B", V5 = "B", 
               V6 = "A", V7 = "B", V8 = "B"), class = "data.frame", row.names = c(NA,
                                                                                  -1L))
xy <- unlist(xy)  # split doesn't work on data.frames

# Make sure that length of xy is divisible by 2.
stopifnot((length(xy) %% 2) == 0)

tosplit <- rep(1:(length(xy) / 2), each = 2)
tosplit <- factor(tosplit)

xy <- split(xy, f = tosplit)
xy <- lapply(xy, FUN = paste, collapse = "")
xy <- unlist(xy)
xy

   1    2    3    4 
"AB" "AB" "BA" "BB" 
这可以很容易地操作到您选择的data.frame中。

我们也可以转换为两列的矩阵,然后进行粘贴

数据 我们也可以转换成两列的矩阵,然后进行粘贴

数据
如何获得V1和V3?如何获得V1和V3?非常感谢,它成功了!V1和V3只是为了显示数据帧中还有其他列。我很抱歉搞混了,我不习惯在这里提问。非常感谢,这很有效!V1和V3只是为了显示数据帧中还有其他列。很抱歉搞混了,我不习惯在这里提问。
do.call(paste0, as.data.frame(matrix(unlist(df1), ncol = 2, byrow = TRUE)))
#[1] "AB" "AB" "BA" "BB"
df1 <- structure(list(V1 = "A", V2 = "B", V3 = "A", V4 = "B", V5 = "B", 
    V6 = "A", V7 = "B", V8 = "B"), class = "data.frame", row.names = c(NA,
-1L))