假设我有一个创建为的数据帧
id <- c("a","b","c","d","e","f")
a <- c(6,4,3,6,4,9)
b <- c(8,5,2,9,0,1)
df <- cbind.data.frame(id,a,b)
其输出为
id x y
1 a 6 8
2 b 4 5
3 c 3 2
4 d 6 9
5 e 4 0
6 f 9 1
这当然是我实际问题的一个较小的可复制版本。在我的实际场景中,我以以下方式从多个.xlsx文件创建了一个数据帧
files <- list.files(path = "Discharge", pattern = "*_SUMQH.xls", full.names = T)
strm_data <- sapply(files, read_xlsx, simplify=FALSE) %>%
bind_rows(.id = "id")
strm_data <- as.data.frame(strm_data[,-(7:19)])
strm_data <- na.omit(strm_data)
row.names(strm_data) <- NULL
我想要的是以以下方式排列数据帧
id x y id x y id x y id x y id x y id x y
1 a 6 8 b 4 5 c 3 2 d 6 9 e 4 0 f 9 1
使用cbind
+split
尝试下面的基本R代码
> do.call(cbind, unname(split(df, 1:nrow(df))))
id a b id a b id a b id a b id a b id a b
1 a 6 8 b 4 5 c 3 2 d 6 9 e 4 0 f 9 1
这里是真正的基本解决方案:
cbind(df[1,], df[2,], df[3,], df[4,], df[5,], df[6,])
输出:
id x y id x y id x y id x y id x y id x y
1 a 6 8 b 4 5 c 3 2 d 6 9 e 4 0 f 9 1