无法对嵌套 data.frame 中的列进行子集化

我有一个包含多个字符列的 data.frame,但也包含一个 data.frame。因此,我的 data.frame 中有一个 data.frame。我的目标是将一个字符列与嵌套 data.frame 内的列一起子集。但是,每当我尝试按名称对嵌套列进行子集化时,它都会声明它不存在。您可以在此处查看 data.frame:

df = structure(
  list(
    `$id` = c("21", "22", "23"),
    Id = c("159347",
           "161863", "22646"),
    Name = c("159347", "161863", "22646"),
    SumPeriod = structure(
      list(
        AccPeriodBasTwrAtMarketPrice = c(0.0969367972082358, 0.537983489472227,-0.107066381156318),
        AccPeriodLocTwrAtMarketPrice = c(0.0969367972082358,
                                         0.537983489472227,-0.107066381156318),
        BopDate = c(
          "2022-02-28T00:00:00",
          "2022-02-28T00:00:00",
          "2022-02-28T00:00:00"
        ),
        BopBasHoldingValueAtMarketPrice = c(7592266.52,
                                            5135960.59, 7166815.5),
        BopBasInterestAccrual = c(0, 0, 0),
        EopDate = c(
          "2022-02-28T00:00:00",
          "2022-02-28T00:00:00",
          "2022-02-28T00:00:00"
        ),
        EopBasHoldingValueAtMarketPrice = c(7599626.22,
                                            5163591.21, 7159142.25),
        EopBasInterestAccrual = c(0, 0,
                                  0),
        AccPeriodBasTwrAtExposureValue = c(0.0969367972082358,
                                           0.537983489472227,-0.107066381156318),
        AccPeriodLocTwrAtExposureValue = c(0.0969367972082358,
                                           0.537983489472227,-0.107066381156318),
        AccBasIrr = c(0.0969367972082358,
                      0.537983489472227,-0.107066381156318),
        AccLocIrr = c(0.096936797208258,
                      0.537983489472227,-0.107066381156318),
        AccBasMwr = c(0.0484449181280957,
                      0.268270120259021,-0.0535618639528656),
        PeriodBasIrr = c(0.0969367972082358,
                         0.537983489472227,-0.107066381156318),
        PeriodLocIrr = c(0.096936797208258,
                         0.537983489472227,-0.107066381156318),
        PeriodBasTwrAtMarketPrice = c(0.0969367972082358,
                                      0.537983489472227,-0.107066381156318),
        PeriodLocTwrAtMarketPrice = c(0.0969367972082358,
                                      0.537983489472227,-0.107066381156318),
        PeriodBasTwrDeposit = c(0,
                                0, 0),
        PeriodBasTwrWithdrawal = c(0, 0, 0),
        PeriodBasTwrDepositWithdrawal = c(0,
                                          0, 0),
        PeriodBasTwrDividendTax = c(0, 0, 0),
        PeriodBasTwr = c(7359.70000000112,
                         27630.6200000001,-7673.25),
        PeriodBasMwr = c(0.0484449181280957,
                         0.268270120259021,-0.0535618639528656),
        BenchmarkCalcType = c(
          "BenchmarkNotCalculated",
          "BenchmarkNotCalculated",
          "BenchmarkNotCalculated"
        ),
        EopBenchmarkName = c("",
                             "", ""),
        AccBasBenchmarkReturnPct = c(0, 0, 0),
        PeriodBasBenchmarkReturnPct = c(0,
                                        0, 0)
      ),
      class = "data.frame",
      row.names = c(NA, 3L)
    ),
    Series = list(
      structure(
        list(
          AccPeriodBasTwrAtMarketPrice = 0.0969367972082358,
          AccPeriodLocTwrAtMarketPrice = 0.0969367972082358,
          BopDate = "2022-02-28T00:00:00",
          BopBasHoldingValueAtMarketPrice = 7592266.52,
          BopBasInterestAccrual = 0,
          EopDate = "2022-02-28T00:00:00",
          EopBasHoldingValueAtMarketPrice = 7599626.22,
          EopBasInterestAccrual = 0,
          AccPeriodBasTwrAtExposureValue = 0.0969367972082358,
          AccPeriodLocTwrAtExposureValue = 0.0969367972082358,
          AccBasIrr = 0,
          AccLocIrr = 0,
          AccBasMwr = 0.0968429207825055,
          PeriodBasIrr = 0,
          PeriodLocIrr = 0,
          PeriodBasTwrAtMarketPrice = 0.0969367972082358,
          PeriodLocTwrAtMarketPrice = 0.0969367972082358,
          PeriodBasTwrDeposit = 0,
          PeriodBasTwrWithdrawal = 0,
          PeriodBasTwrDepositWithdrawal = 0,
          PeriodBasTwrDividendTax = 0,
          PeriodBasTwr = 7359.70000000112,
          PeriodBasMwr = 0.0484449181280957,
          BenchmarkCalcType = "BenchmarkNotCalculated",
          EopBenchmarkName = "",
          AccBasBenchmarkReturnPct = 0,
          PeriodBasBenchmarkReturnPct = 0
        ),
        class = "data.frame",
        row.names = 1L
      ),
      structure(
        list(
          AccPeriodBasTwrAtMarketPrice = 0.537983489472227,
          AccPeriodLocTwrAtMarketPrice = 0.537983489472227,
          BopDate = "2022-02-28T00:00:00",
          BopBasHoldingValueAtMarketPrice = 5135960.59,
          BopBasInterestAccrual = 0,
          EopDate = "2022-02-28T00:00:00",
          EopBasHoldingValueAtMarketPrice = 5163591.21,
          EopBasInterestAccrual = 0,
          AccPeriodBasTwrAtExposureValue = 0.537983489472227,
          AccPeriodLocTwrAtExposureValue = 0.537983489472227,
          AccBasIrr = 0,
          AccLocIrr = 0,
          AccBasMwr = 0.535104714457055,
          PeriodBasIrr = 0,
          PeriodLocIrr = 0,
          PeriodBasTwrAtMarketPrice = 0.537983489472227,
          PeriodLocTwrAtMarketPrice = 0.537983489472227,
          PeriodBasTwrDeposit = 0,
          PeriodBasTwrWithdrawal = 0,
          PeriodBasTwrDepositWithdrawal = 0,
          PeriodBasTwrDividendTax = 0,
          PeriodBasTwr = 27630.6200000001,
          PeriodBasMwr = 0.26827012025902,
          BenchmarkCalcType = "BenchmarkNotCalculated",
          EopBenchmarkName = "",
          AccBasBenchmarkReturnPct = 0,
          PeriodBasBenchmarkReturnPct = 0
        ),
        class = "data.frame",
        row.names = 1L
      ),
      structure(
        list(
          AccPeriodBasTwrAtMarketPrice = -0.107066381156318,
          AccPeriodLocTwrAtMarketPrice = -0.107066381156318,
          BopDate = "2022-02-28T00:00:00",
          BopBasHoldingValueAtMarketPrice = 7166815.5,
          BopBasInterestAccrual = 0,
          EopDate = "2022-02-28T00:00:00",
          EopBasHoldingValueAtMarketPrice = 7159142.25,
          EopBasInterestAccrual = 0,
          AccPeriodBasTwrAtExposureValue = -0.107066381156318,
          AccPeriodLocTwrAtExposureValue = -0.107066381156318,
          AccBasIrr = 0,
          AccLocIrr = 0,
          AccBasMwr = -0.107181136120043,
          PeriodBasIrr = 0,
          PeriodLocIrr = 0,
          PeriodBasTwrAtMarketPrice = -0.107066381156318,
          PeriodLocTwrAtMarketPrice = -0.107066381156318,
          PeriodBasTwrDeposit = 0,
          PeriodBasTwrWithdrawal = 0,
          PeriodBasTwrDepositWithdrawal = 0,
          PeriodBasTwrDividendTax = 0,
          PeriodBasTwr = -7673.25,
          PeriodBasMwr = -0.0535618639528656,
          BenchmarkCalcType = "BenchmarkNotCalculated",
          EopBenchmarkName = "",
          AccBasBenchmarkReturnPct = 0,
          PeriodBasBenchmarkReturnPct = 0
        ),
        class = "data.frame",
        row.names = 1L
      )
    )
  ),
  class = "data.frame",
  row.names = c(NA,
                3L)
)

因此,在上面的 data.frame 中,我感兴趣的唯一列是“Id”和“EopBasHoldingValueAtMarketPrice”,后者是嵌套 data.frame 内称为“SumPeriod”的列。我尝试通过以下方式实现:

df_subset = subset(df, select = c("Id", "SumPeriod$EopBasHoldingValueAtMarketPrice"))

但我得到了错误:

frame`(x, r, vars, drop = drop) : undefined columns selected

你们知道如何实现这一目标吗?

用户2554330

您没有任何名为的东西"SumPeriod$EopBasHoldingValueAtMarketPrice",这是一个从中提取列的表达式SumPeriod@Stephan 给了你一个dplyr解决方案;这是一个基本的 R 解决方案:

df1 <- subset(df, select = c("Id", "SumPeriod"))
df1$SumPeriod <- subset(df1$SumPeriod, select = "EopBasHoldingValueAtMarketPrice")

这将结构保持为嵌套数据框。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用数值向量对data.frame进行子集化

R中data.frame的嵌套采样

是否有可能基于行范围和r中的逻辑条件对data.frame进行子集化?

子集字符向量以在data.frame中创建列

data.frame列中至少连续五年的子集

使用tidyverse来“取消嵌套”内部的data.frame列

如何创建具有嵌套列结构的 data.frame

R 中同名 data.frame 的子集

在R中堆叠data.frame的子集

R:循环遍历 2 列以对 data.table 或 data.frame 进行子集

根据第二个data.frame中的因子级别对data.frame进行子集

错误:无法使用R函数进行转换:as.data.frame

如何在 r 中的嵌套列表 data.frame 中添加列表名称作为列

使用选择表达式中列名的变量对 data.frame 进行子集

data.frame在R中无法正确解析

嵌套行列表中的Data.frame,带有类列表的列

根据列值对应关系减去嵌套在 data.frame 中的行

根据行列组合对data.frame进行子集

R:如何将嵌套列表“嵌套”到data.frame中?

在使用多个因素折叠data.frame中的变量时避免嵌套嵌套

r子集并从data.frame的其他列中减去一列

基于向量对data.frame中的列进行分类

R 从 Data.Frame 创建嵌套列表

根据R中的名称索引重命名data.frame / tible中连续列的子集

后续:泛化 data.frame 子集功能

规范化R data.frame列中的数据

沿向量映射并使用purrr系列函数输出嵌套列表的data.frame列(或嵌套的data.frames)?

在data.frame的列中子集和计数值

在data.frame中对值进行分类