前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言:data.table语句批量生成变量

R语言:data.table语句批量生成变量

作者头像
用户7652506
发布2020-08-12 10:44:02
1.2K0
发布2020-08-12 10:44:02
举报
文章被收录于专栏:大猫的R语言课堂

在前面

本期依然由村长为大家供稿,只为填上一期最后挖的坑,话不多说进入正题。

题提出

在上一期中,还记得我们留下的那个彩蛋吗?我们在对多列标准进行筛选时,在之前我们还进行了一步非常重要的提取,也就是将每一列观察值提取出某一特定的字段,而后生成一系列变量,这些变量的观测值只可能存在三种情况:醛固酮、继发性醛固酮或者NA。

经过这样的处理我们才能进行上一期公众号所讲述的下一步:以多列标准进行筛选的操作

我们先将这段代码放上来:

clinic <- clinic[, str_c(colnames(clinic)[2:23], "_xtrct") := lapply(.SD[, 2:23], str_match, "继发性醛固酮|醛固酮")]

再来看看运行结果:

上述结果可以看出,我们重新生成了很多被处理过的变量,都带有后缀_xtrct,下面让村长对这一行代码进行详细解析。

:=

右边

关于 ':= lapply' 的用法,在这里小编不再赘述,如果大家对此不是很熟悉可以看这一期公众号:用data.table语句批量处理变量

在这里通过链接中的推送的lapply使用原理,再加上stringr包中str_match这个函数的使用,截取出诊断结果中出现过的继发性醛固酮或者醛固酮,没有出现过的自动记为NA。代码如下:

lapply(.SD[, 2:23], str_match, "继发性醛固酮|醛固酮")

:=

左边

我们可以再回顾一下,上文链接中用data.table语句批量处理变量的推送中所提到的 ‘:=’ 左边格式的问题: ':=' 左边的格式应该是一个向量,一个带有需要被处理变量的字符格式的向量,这一点从colnames这个函数的使用可以得知。

那么对于一个字符格式向量的处理,最好的选择就是stringr这个包,在这里我们为需要提取一部分字段的变量,运用str_c这个函数,对每一个变量名加入了后缀_xtrct,从而生成一系列新的变量名,也即是我们上文中生成的那个数据集。

str_c(colnames(clinic)[2:23], "_xtrct")

最后我们把 ':=' 左右两边的代码组合在一起,放入data.table语句的j中就是我们在一开始所讲述的代码。

大猫的R语言课堂

我是大猫,一个高中读文科但却在代码、数学的路上狂奔不止的Finance Ph. D Candidate。

我是村长,一个玩了9年指弹吉他,却被代码深深吸引的博士候选人。

大猫的微信号是:

iRoss2007

村长的B站主页是:http://space.bilibili.com/40771572

大猫的R语言课堂关注R语言、数据挖掘以及经济金融学。

我们与大家分享我们的知识和节操,我相信独乐乐不如众乐乐。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的R语言课堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 问题提出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档