【问题标题】:Merge rows of multiple columns into one (row) R将多列的行合并为一个(行)R
【发布时间】:2019-04-29 15:55:51
【问题描述】:

我有这样的数据,想将它们合并成一行。当然我可以做一个 for 循环,但这并不优雅且效率不高。 我目前的数据:

0.063456491   0.004457746    0.013450942     0.023948062     0.02247313
0.003147881  -0.018681539   -0.009495686    -0.008677241     0.013863377
0.083954841   0.100283809    0.061790913    -0.004592628    -0.052269582
-0.021375194  -0.041536406  -0.044538945     0.023639958     0.037451282

预期输出:

0.063456491 0.004457746 0.013450942 0.023948062 0.02247313  0.003147881 -0.018681539    -0.009495686    -0.008677241    0.013863377 0.083954841 0.100283809 …

非常感谢, 芳

【问题讨论】:

  • 假设您显示的数据是矩阵形式:as.vector(df)
  • 类似data.frame(t(unlist(df))) ?
  • @Ronak:非常感谢,它可以正常工作,正如我在添加这样的另一个步骤时所期望的那样:df1
  • @Omry:我在应用 as.vector() 时没有显示任何变化,但还是谢谢
  • 为什么需要两个步骤? data.frame(t(unlist(df))) 给你同样的输出?

标签: r merge plyr


【解决方案1】:

使用函数 unlist 将所有内容合并为一行

df <- data.frame(v1 = c(0.0000,0.1111,0.2222), v2 = c(1.11111,1.22222,1.33333))
 print(df)
      v1      v2
1 0.0000 1.11111
2 0.1111 1.22222
3 0.2222 1.33333
> df <- unlist (df, use.names = F)
> print(df)
 0.00000 0.11110 0.22220 1.11111 1.22222 1.33333

【讨论】:

  • 其实我想要的输出是:0.0000 1.11111 0.1111 1.22222 0.2222 1.33333
【解决方案2】:

如果您的所有数据都是数字,并且您想逐行提取它,您可以这样做

data.frame(t(as.numeric(t(df))))

#          X1          X2         X3         X4         X5          X6 ......
#1 0.06345649 0.004457746 0.01345094 0.02394806 0.02247313 0.003147881 ......

或者更通用的as.vector 方法也可以使用

data.frame(t(as.vector(t(df))))

【讨论】:

    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多