【问题标题】:How to merge similar columns in single dataframe in R?如何合并R中单个数据框中的相似列?
【发布时间】:2019-01-07 07:08:40
【问题描述】:

考虑我在 R 中有这个数据框

我怎样才能把它变成:

我有这些同名的多个列。所以现在我必须保留所有唯一的列名并以某种方式以行方式插入它们的值

【问题讨论】:

  • 请使用 SO 代码编辑工具格式化您的代码。您提到了data.frame,但显示了看起来像字符串向量的内容。我也不明白你的预期输出。你如何将6 作为第四个元素?
  • 还有——请把逻辑解释清楚
  • @Neeraj 您的数据截图没有用,因为我们无法复制和粘贴。使用dput。更好的是,看看如何提供minimal reproducible example
  • 我有这些同名的多个列。所以现在我必须保留所有唯一的列名,并以某种方式以行方式插入它们的值
  • @Neeraj 您必须阅读我提供的关于如何提供代表的链接。您的问题陈述不清楚。数据截图没有帮助。

标签: r dataframe


【解决方案1】:

您可以使用以下脚本:

df <- data.frame(matrix(c(1:7), ncol = 7))
names(df) <- c(rep("a", 4), rep("b", 3))
dfi <- as.data.frame(t(df))
dfi$id <- factor(names(df))
max_n <- max(tapply(dfi$V1, dfi$id, length))

ll <- split(dfi, dfi$id)
df_out <- as.data.frame(sapply(ll, function(x) {
    c(x$V1, rep(NA, max_n - length(x$V1)))  
}))

df_out

输出:

  a  b
1 1  5
2 2  6
3 3  7
4 4 NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多