请考虑以下内容:
x <- c("a", "b", "c", "d" , "e", "f")
y <- c("N", "M")
z <- c("P", "Q")
我想要的最终产品:
A B
x a
x b
x c
x d
x e
x f
y N
y M
z P
z Q
这是我到目前为止尝试过的
rbind(x, y, z)
data.frame(c(x, y, z))
cbind(x, y, z)
stack(x, y, z)
merge(x, y, z)
答案 0 :(得分:2)
将expand.grid
与rbind
一起使用:
df <- rbind(expand.grid("x", x), expand.grid("y", y), expand.grid("z", z))
names(df) <- c("A", "B")
df
A B
1 x a
2 x b
3 x c
4 x d
5 x e
6 x f
7 y N
8 y M
9 z P
10 z Q
答案 1 :(得分:2)
这里是$dt =$line -as [datetime]
tidyverse
请注意,默认情况下,library(tidyverse)
mget(letters[24:26]) %>%
enframe %>%
unnest
# A tibble: 10 x 2
# name value
# <chr> <chr>
# 1 x a
# 2 x b
# 3 x c
# 4 x d
# 5 x e
# 6 x f
# 7 y N
# 8 y M
# 9 z P
#10 z Q
会将列名称指定为“名称”和“值”,但是可以通过指定自定义名称的参数来更改名称
enframe
答案 2 :(得分:2)
stack
是您想要的,除了使用命名的list
:
stack(list(x=x,y=y,z=z)) #or
stack(mget(c("x","y","z")))
# values ind
#1 a x
#2 b x
#3 c x
#4 d x
#5 e x
#6 f x
#7 N y
#8 M y
#9 P z
#10 Q z
答案 3 :(得分:1)
另一种选择是将所有变量添加到列表中,然后创建一个数据框。
lst <- list(x = x, y = y, z = z)
data.frame(A = rep(names(lst), lengths(lst)), B = unlist(lst), row.names = NULL)
# A B
#1 x a
#2 x b
#3 x c
#4 x d
#5 x e
#6 x f
#7 y N
#8 y M
#9 z P
#10 z Q