R中数据框的非常简单的枢轴

时间:2018-11-05 12:04:26

标签: r

有人可以告诉我如何从数据帧df到下面的可复制代码示例中所需的数据帧吗?基本上,这只是一个简单的枢轴。谢谢!

id <- c(1, 2)
x <- c('a', 'b')
y <- c('c', 'd')

df <- data.frame(id, x, y)

head(df)

c1 <- c('id', 'x', 'y')
c2 <- c('1', 'a', 'c')
c3 <- c('2', 'b', 'd')

desired <- data.frame(c1, c2, c3)

head(desired)

这似乎可行(另请参见here):

test <- transpose(df)
colnames(test) <- rownames(df)
rownames(test) <- colnames(df)

但这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

一个班轮是

setNames(data.frame(names(df), t(df)), paste0("c", 1:3))

一个更通用的解决方案,无需对向量1:3进行硬编码

setNames(data.frame(names(df), t(df)), paste0("c", seq_along(names(df))))