私はリストを持っています:
l1<-list(A=1:10, B=100:120, C=300:310, D=400:430)
2列のデータフレームに変換するにはどうすればよいですか?
C1 C2
R1 1 A
R2 2 A
...
R10 10 A
R11 100 B
R12 101 B
....
R73 429 D
R73 430 D
私は試した:
df1 <- data.frame(matrix(unlist(l1), nrow=length(l1), byrow=T))
しかし、リスト内のベクトルの長さが複数あるため、エラーが発生します。また、私の実際のリストは、整数だけでなく日付で構成されています。
使用するだけstack
です:
stack(l1)
> head(stack(l1))
values ind
1 1 A
2 2 A
3 3 A
4 4 A
5 5 A
6 6 A
> tail(stack(l1))
values ind
68 425 D
69 426 D
70 427 D
71 428 D
72 429 D
73 430 D
更新
stack
日付では機能しません。実際の日付オブジェクトがある場合は、次のことができます。
data.frame(ind = rep(names(l1), lengths(l1)),
val = as.Date(unlist(l1), origin = "1970-01-01"))
または
data.frame(ind = rep(names(l1), lengths(l1)), val = do.call(c, l1))
サンプルデータ:
l1<-list(A=Sys.Date()+(1:10),
B=Sys.Date()+(100:120),
C=Sys.Date()+(300:310),
D=Sys.Date()+(400:430))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加