r - 剪切列并将其与 r 中的数据框进行 rbind

标签 r dplyr

我的数据有几个重复的列,我想剪切重复的列并重新绑定(bind)它。

我已经在我的代码中做到了这一点,但我想知道是否有更有效的方法来做到这一点。

df <- data.frame(a = 1:4,
             b = 5:8,
             a.1 = letters[1:4],
             b.1 = letters[5:8],
             a.2 = LETTERS[1:4],
             b.2 = LETTERS[5:8])
names(df)[c(1,3,5)] <- "a"
names(df)[c(2,4,6)] <- 'b'

d1 <- df[,1:2]
d2 <- df[,3:4]
d3 <- df[,5:6]
d <- rbind(d1,d2) %>% rbind(d3)

最佳答案

另一个基本 R 选项是使用 split.default 并根据列的名称拆分数据帧,取消列出它们和cbind 单独的列表。

do.call(cbind.data.frame, lapply(split.default(df, names(df)), unlist))

#     a b
#a1   1 5
#a2   2 6
#a3   3 7
#a4   4 8
#a.11 a e
#a.12 b f
#a.13 c g
#a.14 d h
#a.21 A E
#a.22 B F
#a.23 C G
#a.24 D H

如果不需要,您可以将行名称设置为NULL。还可以通过设置 stringsAsFactors = FALSE 将字符读取为字符而不是因子。

关于r - 剪切列并将其与 r 中的数据框进行 rbind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56470327/

相关文章:

r - 如何从 r 中的 gzip 文件读取行?

r - 更改面之间的配色方案

使用 dplyr 根据另一个向量替换 NA 每列

r - 查找数据中连续递减值的行数

r - 使用 data.table 优化对一个变量的唯一值数量进行计数

r - 模拟RStudio

r - 将字符串转换为函数的非字符串输入

r - 使用 purrr::map 将多个参数应用于函数

当参数是 dplyr 中的字符串时,将 group_by_ 替换为 group_by

r - 折叠 tidyverse 中的一些分类变量