我有一个数据框
samp_data=data.frame(a=1:5,b=c('22','23','34','21','43'),c=c('11','12','13','54','43'))
samp_data
a b c
1 22 11
2 23 12
3 34 13
4 21 54
5 43 43
str(samp_data)
'data.frame': 5 obs. of 3 variables:
$ a: int 1 2 3 4 5
$ b: Factor w/ 5 levels "21","22","23",..: 2 3 4 1 5
$ c: Factor w/ 5 levels "11","12","13",..: 1 2 3 5 4
我想将上述数据框转换为类似
的内容1 22
1 11
2 23
2 12
3 34
3 13
这就是保持专栏' a'实际上,将其他两列合并为一列' a'。
我看到了一些相关的线程,发现了这两个函数,但我没有得到理想的结果。
dat <- data.frame(samp_data[1], stack(samp_data[2:ncol(samp_data)]))
dat <- melt(samp_data, id.vars=1)
答案 0 :(得分:0)
我们可以为列的子集(没有第一列)进行转置和连接,并创建data.frame
并复制第一列
d1 <- data.frame(a = rep(samp_data[,1], each = 2), b = c(t(samp_data[-1])))
d1
# a b
#1 1 22
#2 1 11
#3 2 23
#4 2 12
#5 3 34
#6 3 13
#7 4 21
#8 4 54
#9 5 43
#10 5 43
或者@thelatemail提到
data.frame(samp_data["a"], b=unlist(samp_data[c("b","c")], use.names = FALSE))