【问题标题】:Put the same cells in two columns and add new cells in r将相同的单元格放在两列中并在 r 中添加新单元格
【发布时间】:2021-06-21 23:36:03
【问题描述】:

我有一个数据框:

plot1   data    plot2   data2    data3
 a       25       c       28      13
 b       46       e       18      12
 c       21       j       66      24
 d       32
 e       1

我想按如下方式获取我的数据:

plot1   data    plot2   data2     data3
 a       25        a      0        0
 b       46        b      0        0
 c       21        c      66       13
 d       32        d      0        0
 e       1         e      18       12
 j       0         j      66       24

【问题讨论】:

  • 不需要 f 0 f 0?
  • 我只需要数据框标签我不希望新数据框中有任何额外的字母,例如问题中的示例

标签: r dataframe duplicates


【解决方案1】:

这是一个使用data.table的高度可扩展选项

样本数据

library(data.table)
DT <- fread("plot1   data    plot2   data2    data3
 a       25       c       28      13
 b       46       e       18      12
 c       21       j       66      24
 d       32 NA NA NA 
 e       1 NA NA NA")
#    plot1 data plot2 data2 data3
# 1:     a   25     c    28    13
# 2:     b   46     e    18    12
# 3:     c   21     j    66    24
# 4:     d   32  <NA>    NA    NA
# 5:     e    1  <NA>    NA    NA

代码

# Split in parts of 2 columns
L <- lapply( split.default(DT, f = cumsum(grepl("^plot",names(DT))) ),
             function(x) setnames(x, old = grep("^plot", names(x), value = TRUE), new = "plot") )

mymerge <- function(x, y) merge.data.table(x, y, all = TRUE, by = "plot", allow.cartesian = TRUE)
ans <- Reduce(mymerge, L)[!is.na(plot), ]
ans[is.na(ans)] <- 0
ans

输出

#    plot data data2 data3
# 1:    a   25     0     0
# 2:    b   46     0     0
# 3:    c   21    28    13
# 4:    d   32     0     0
# 5:    e    1    18    12
# 6:    j    0    66    24

【讨论】:

  • 非常感谢
  • 如果其中一个地块有其他数据,该功能不起作用,您能帮帮我吗?
  • 我不明白。请通过补充更新您的问题。
  • 我的意思是第二个图有 2 列或几列数据,其他图也有几个数据列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 2021-03-03
  • 2013-09-22
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多