【问题标题】:Create a list of maps from a data frame in R从 R 中的数据框创建地图列表
【发布时间】:2021-06-08 14:24:08
【问题描述】:

我有一个数据框如下:

我想从数据框中创建一个地图列表。下面是我现在使用的代码:

list_tot <- list()
list_tot[[1]] <- list()
list_tot[[1]][['arId']] <- "AR-3739"
list_tot[[1]][['lrIds']] <- list()
list_tot[[1]][['lrIds']][[1]] <- "LR-125423"


list_tot[[2]] <- list()
list_tot[[2]][['arId']] <- "AR-3764"
list_tot[[2]][['lrIds']] <- list()
list_tot[[2]][['lrIds']][[1]] <- "LR-125424"

list_tot[[3]] <- list()
list_tot[[3]][['arId']] <- "AR-3678"
list_tot[[3]][['lrIds']] <- list()
list_tot[[3]][['lrIds']][[1]] <- "LR-125425"

jsonData <- toJSON(list_tot)

下面是输出:

"[{\"arId\":\"AR-3739\",\"lrIds\":[\"LR-125423\"]},{\"arId\":\"AR-3764\",\"lrIds\":[\"LR-125424\"]},{\"arId\":\"AR-3678\",\"lrIds\":[\"LR-125425\"]}]"

一个“AR ID”可以有多个“LR ID”,即对于每一行,“LR ID”是唯一的,而“AR ID”可以有重复。如果数据框中有很多行,您能否告诉我是否有一种方便的方法可以做到这一点。感谢您的帮助。

【问题讨论】:

  • "一个“AR ID”可以有多个“LR ID”" - 如果您的示例数据证明了这个问题,并且您的示例输出显示了您的问题,那么您的问题会好很多您希望如何处理它。
  • 好建议。我已经修改了示例数据。
  • 如果您对更多解决方案感兴趣,您还会以有效的 R 语法发布您的示例数据吗?从电子表格的图片中导入数据很烦人。

标签: r json list data-manipulation


【解决方案1】:

这不是最优雅的解决方案,但无论您的数据框中有多少行,它都应该可以工作。 首先,我把你的 excel 表格变成了一个数据框:

df <- data.frame(
  AR_ID = c("AR-3739", "AR-3764", "AR-3678"),
  LR_ID = c("LR-125423", "LR-125424", "LR-125425")
)

然后,得到你想要的输出:

library(dplyr)
get_sublist <- function(small_df) {
  list(arId = unique(small_df$AR_ID), lrIds = as.list(small_df$LR_ID))
}

unique_arids <- unique(df$AR_ID)
list_tot <- lapply(
  X = unique_arids,
  FUN = function(arid) {
    df %>%
      filter(AR_ID == arid) %>%
      get_sublist()
  }
)
jsonData <- toJSON(list_tot)

【讨论】:

  • 不错的解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-02-23
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 2018-08-28
  • 2023-03-21
相关资源
最近更新 更多