【问题标题】:Sum last value in a dataframe in list A to first value in dataframe in list B将列表 A 中数据框中的最后一个值与列表 B 中数据框中的第一个值相加
【发布时间】:2019-03-17 06:26:24
【问题描述】:

我有两个包含 500 个数据框的列表。这是两个列表的示例,每个列表包含 2 个数据框。

 l1
    [[1]]
      X1 X2 X3
    1  1  0  0
    2  5  1  8

    [[2]]
      X1 X2 X3
    1  0  1  1
    2  3  0  4

l2
   [[1]]
      X1 X2 X3
    1  1  1  0
    2  0  1  1

    [[2]]
      X1 X2 X3
    1  0  1  0
    2  0  1  1

我需要将数据框的一列中的最后一个值与不同列表中数据框的同一列的第一个值相加。例如:

l1[[1]]$x1[2] to l2[[1]]$x1[1] ; and l1[[1]]$x3[2] to l2[[1]]$x3[1] 

在我的示例中,预期的结果应该记录在 l2 中包含的数据帧中,并且应该如下所示:

> l2
[[1]]
  X1 X2 X3
1  6  2  8
2  0  1  1

[[2]]
  X1 X2 X3
1  3  1  4
2  0  1  1

我打算对包含 500 个数据帧的列表执行此操作。我会更喜欢 Dplyr。

【问题讨论】:

标签: r dplyr lapply


【解决方案1】:

尝试地图/映射:

# data
l1 <- list("X1 X2 X3
1  1  0  0
          2  5  1  8",
          "X1 X2 X3
1  0  1  1
          2  3  0  4")

l1 <- lapply(l1, function(x) read.table(text = x, header = TRUE))

l2 <- list("X1 X2 X3
1  1  1  0
           2  0  1  1",
           "X1 X2 X3
1  0  1  0
           2  0  1  1")
l2 <- lapply(l2, function(x) read.table(text =x, header = T))

# Map
Map(function(a, b) rbind(a[2, ] + b[1,  ], b[2, ]), l1, l2)

# [[1]]
# X1 X2 X3
# 2   6  2  8
# 21  0  1  1
# 
# [[2]]
# X1 X2 X3
# 2   3  1  4
# 21  0  1  1

或者:

library(tidyverse)
map2(l1, l2, ~bind_rows(.x %>%
                          slice(2) %>%
                          bind_rows(.y %>%
                                      slice(1)) %>%
                          summarise_all(funs(sum)), 
                        .y %>%
                          slice(2)))

【讨论】:

  • 如果我尝试立即重现它Realizations&lt;-lapply(Realizations,function(x) read.table(text= x, header = TRUE)) 它会给出错误 invalid 'text argument'
  • 不太确定错误。尝试添加stringsAsFactors=Fstat.ethz.ch/pipermail/r-help/2011-July/284044.html)。
  • 几乎,但在我的示例中,我需要对第 1 列和第 3 列中的元素求和。在我的真实数据集中,需要对第 25、45 和 79 列中的元素求和。不过,非常感谢您的回答。感谢您尝试帮助我。
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 2021-09-05
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2021-09-23
相关资源
最近更新 更多