我在R中有3个数据帧,假设:
df1 <- data.frame(x = 1:5, y = 1:5)
df2 <- data.frame(x = 1:6, y = 1:6)
df3 <- data.frame(x = 1:4, y = 1:4)我想将它们合并在一起,以创建一个新的数据帧,该数据帧的第一列是该数据帧的每一行的数据帧的名称。我看起来就像这样:
df x y
1 df1 1 1
2 df1 2 2
3 df1 3 3
4 df1 4 4
5 df1 5 5
6 df2 1 1
7 df2 2 2
8 df2 3 3
9 df2 4 4
10 df2 5 5
11 df2 6 6
12 df3 1 1
13 df3 2 2
14 df3 3 3
15 df3 4 4有什么想法吗?提前谢谢你。
发布于 2018-11-11 00:55:19
坚持使用base R函数,并在NelsonGon的答案上稍作扩展:
d <- rbind(df1=df1, df2=df2, df3=df3)
d <- cbind(df=sub("..$", "", rownames(d)), data.frame(d, row.names=NULL))
d
df x y
1 df1 1 1
2 df1 2 2
3 df1 3 3
4 df1 4 4
5 df1 5 5
6 df2 1 1
7 df2 2 2
8 df2 3 3
9 df2 4 4
10 df2 5 5
11 df2 6 6
12 df3 1 1
13 df3 2 2
14 df3 3 3
15 df3 4 4这将使用cbind将修改后的行名添加为列。
https://stackoverflow.com/questions/53241006
复制相似问题