[英]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.