簡體   English   中英

在 R 的表中在另一列下方添加幾列

[英]adding several columns below another in a table in R

我是 R 的初學者,我想知道是否可以在另一個表/小標題中添加多個列?

我的例子:

my_tibble <- tibble(a = c(1:4),
                    b = c(2:5), 
                    c = c(3:6), 
                    d = c(4:7), 
                    a1 = c(4:1),
                    b2 = c(5:2), 
                    c2 = c(6:3),
                    d2 = c(7:4))

最后,我想看起來像這樣:

my_tibble_1 <- tibble(a = c(1,2,3,4,2,3,4,5,3,4,5,6,4,5,6,7),
                      a1 = c(4,3,2,1,5,4,3,2,6,5,4,3,7,6,5,4))

是否可以在 R / tidyverse 中執行此操作?

非常感謝 !!

我可能誤解了你的問題,但我會盡力回答。 您需要根據所需的順序提供列列表:

my_order <- c("a", "a1")
my_tibble[ ,my_order]

如果要將第 1 到 4 列和第 5 到 8 列合並為兩個新列:

nc <- ncol(my_tibble)
my_new_df <- data.frame(a = Reduce(`c`, my_tibble[, 1:(nc/2)]),
           a1 = Reduce(`c`, my_tibble[, (nc/2+1):nc]))

如果是 select 同名列

library(dplyr)
my_tibble %>%
     select(starts_with('a'))

或者如果我們有興趣將第一 4 列組合為單列,接下來的 4 列作為第二列,然后使用split並將其轉換為data.frame

out <- data.frame(lapply(split.default(my_tibble, rep(c('a', 'a1'), 
           each = 4)), unlist))
row.names(out) <- NULL

out
#   a a1
#1  1  4
#2  2  3
#3  3  2
#4  4  1
#5  2  5
#6  3  4
#7  4  3
#8  5  2
#9  3  6
#10 4  5
#11 5  4
#12 6  3
#13 4  7
#14 5  6
#15 6  5
#16 7  4

如果它基於 'a' 作為列名中的前綴的出現

grp <- cumsum(startsWith(names(my_tibble), 'a'))
data.frame(lapply(split.default(my_tibble, grp), unlist))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM