我的数据有几个重复的列,我想剪切重复的列并重新绑定(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/