Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-将数据帧转换为json_Json_R_Dataframe - Fatal编程技术网

R-将数据帧转换为json

R-将数据帧转换为json,json,r,dataframe,Json,R,Dataframe,我想将下面的数据帧转换为JSON,但我不确定如何实现它。我试图在网上找到一些帮助,但似乎没有人在r数据帧上找到过 df<-data.frame(profileKey=c(7,7,7,8,8,8),joinDate=c('2007-11-01','2007-11- 01','2007-11-01','1993-01-04','1993-01-04','1993-01-04'),Year=c('2013','2014','2015','2013','2014','2015'),monthlyS

我想将下面的数据帧转换为JSON,但我不确定如何实现它。我试图在网上找到一些帮助,但似乎没有人在r数据帧上找到过

df<-data.frame(profileKey=c(7,7,7,8,8,8),joinDate=c('2007-11-01','2007-11-
01','2007-11-01','1993-01-04','1993-01-04','1993-01-04'),Year=c('2013','2014','2015','2013','2014','2015'),monthlySalary=c('2000','3251','2015','4355','1112','33223'),event=c(0,0,0,0,0,1))
注意:有一个类似的问题,但不是完全相同的问题。我的问题解决了嵌套JSON的问题,基本上就是如何以时间序列的形式为一些变量生成数据。这需要额外的数据争用,而不仅仅是将其输入
toJson()
函数


非常感谢您的帮助。

正如其他人在评论中建议的那样,为了将R对象转换为JSON,可以使用jsonlite::toJSON函数

在我看来,您的问题在于正确格式化R对象以获得所需的输出

显然,有一些业务逻辑决定json中每个对象的内容。我已经定义了一个简单的函数来将数据帧转换为列表,如果您想要更改,如果您有更复杂的逻辑,您可能需要编辑该列表

希望这有帮助

df <- data.frame(
  profileKey=c(7,7,7,8,8,8)
  , joinDate=c('2007-11-01','2007-11-01','2007-11-01'
               ,'1993-01-04','1993-01-04','1993-01-04')
  , Year=c('2013','2014','2015','2013','2014','2015')
  , monthlySalary= as.numeric(c('2000','3251','2015','4355','1112','33223'))
  , event=c(0,0,0,0,0,1)
  , stringsAsFactors = FALSE)


convert_groupings <- function(key_df){

  key_df <- as.list(key_df)

  key_df$profileKey <- unique(key_df$profileKey)
  key_df$joinDate <- unique(key_df$joinDate)

  names(key_df$event) <- names(key_df$monthlySalary) <- key_df$Year
  key_df$Year <- NULL

  key_df$event <- as.list(key_df$event)
  key_df$monthlySalary <- as.list(key_df$monthlySalary)

  key_df
}


df_list <- split(df, f = df$profileKey)
df_list <- lapply(df_list, convert_groupings)

cat(
  jsonlite::toJSON(
    df_list
    , auto_unbox = T
    , pretty = T
  )
)

df“看起来没有人在r数据帧上做过”-不正确。搜索'r data.frame to json',您将得到多个示例。e、 例如,
jsonlite::toJSON(df,pretty=T)
非常感谢。这个有用!!
df <- data.frame(
  profileKey=c(7,7,7,8,8,8)
  , joinDate=c('2007-11-01','2007-11-01','2007-11-01'
               ,'1993-01-04','1993-01-04','1993-01-04')
  , Year=c('2013','2014','2015','2013','2014','2015')
  , monthlySalary= as.numeric(c('2000','3251','2015','4355','1112','33223'))
  , event=c(0,0,0,0,0,1)
  , stringsAsFactors = FALSE)


convert_groupings <- function(key_df){

  key_df <- as.list(key_df)

  key_df$profileKey <- unique(key_df$profileKey)
  key_df$joinDate <- unique(key_df$joinDate)

  names(key_df$event) <- names(key_df$monthlySalary) <- key_df$Year
  key_df$Year <- NULL

  key_df$event <- as.list(key_df$event)
  key_df$monthlySalary <- as.list(key_df$monthlySalary)

  key_df
}


df_list <- split(df, f = df$profileKey)
df_list <- lapply(df_list, convert_groupings)

cat(
  jsonlite::toJSON(
    df_list
    , auto_unbox = T
    , pretty = T
  )
)