R语言rlist包的使用

基本用法

#此例子来自上述文章
#创建一个 rlist
devs <- 
  list(
    p1=list(name="Ken",age=24,
      interest=c("reading","music","movies"),
      lang=list(r=2,csharp=4,python=3)),
    p2=list(name="James",age=25,
      interest=c("sports","music"),
      lang=list(r=3,java=2,cpp=5)),
    p3=list(name="Penny",age=24,
      interest=c("movies","reading"),
      lang=list(r=1,cpp=4,python=2)))

#查看rlist,用str比较简洁
str(devs)

#映射 
list.map(devs,age)
list.map(devs, names(lang))
list.map(devs, mean(as.numeric(lang)))

#筛选
list.filter(dev,age>25)

与 data.table 的结合

#读入测试数据
test = read.csv("test.csv",stringsAsFactors = FALSE,header = T)

在这里插入图片描述
为什么要使用 rlist 和 data.table 结合

  • 在这类型的数据中,ID,Sex, Age 之间是相对联系没那么紧密的,但是存在一些 Vars, Var1 和 Var2 和 Var3 之间是有关联的,每一个 Var1, Var2, Var3, 又分为 A, B两个部分。例如,Var123分别代表三餐的血糖,但每一餐的血糖测了餐前后餐后两个值(即A 和 B),在计算血糖波动的时候,通常要每一餐的餐后减去餐前,再取平均值,在记录天数很多的时候,用 rlist 就能减少工作量。又例如,Vars为一个检测的结果,VarA是检测日期,VarB是检测结果,总共测了1,2,3…N 次,如要分析检测结果的变化情况。
#将 data.frame 转换成 rlist
test_lst = lapply(1:nrow(test),function(i){
  r = test[i,]
  l = list()
  l$ID = r$ID
  l$Sex = r$Sex
  l$Age = r$Age
  l$Vars <- data.table(c(r$Var1_A,r$Var2_A,r$Var_3A),c(r$Var1_B,r$Var_2B,r$Var_3B))
  colnames(l$Vars) = c("VarA","VarB")
  l
})
  • 转换后部分如图
    在这里插入图片描述
#查看数据
test_lst[[1]]$ID
test_list[[1]]$Vars$VarA
Diff <-
  lapply(test_lst,function(x){
    dt <- x$Var
    dif = mean(dt$VarB - dt$VarA)
  })

在这里插入图片描述

Reference

R语言︱非结构化数据处理神器——rlist包

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值