c) 管道操作
data.table
中也有类似dplyr
中%>%
功能的函数,下面我们来看看这个功能的好处:
# 按球员分组求出场均得分和助攻,再按得分降序排列
mptsmastby = .mpts# ? ?player ? ? mpts ? ? ?mast
# 1: ? 库里 30.06329 ?6.670886
# 2: ? 威少 23.47500 10.425000
# 3: ? 沃尔 19.88312 10.246753
# 4: ? 欧文 19.64151 ?4.716981
# 5: ? 保罗 19.54054 ?9.972973
# 6: ? 康利 15.30357 ?6.107143
# 使用管道操作
# 6: ? 康利 15.30357 ?6.107143
可以看出,data.table
中的管道操作是按照DT[ ... ][ ... ][ ... ]
的形式进行操作的。
e) 用.SD
同时对多列进行相同计算
– 计算每一个球员的场均数据
# 提取球员,得分,助攻,抢断,失误数据列
ast,0);">stl,0);">tov# 按球员分组计算其他所有数据列的均值
lapply.SD,136); font-style: italic;"># ? ?player ? ? ?pts ? ? ? ast ? ? ?stl ? ? ?tov
# 1: ? 库里 30.06329 ?6.670886 2.139241 3.316456
# 2: ? 康利 15.30357 ?6.107143 1.196429 1.500000
# 3: ? 保罗 19.54054 ?9.972973 2.054054 2.621622
# 4: ? 沃尔 19.88312 10.246753 1.883117 4.129870
# 5: ? 威少 23.47500 10.425000 2.037500 4.275000
# 6: ? 欧文 19.64151 ?4.716981 1.056604 2.339623
采用.SD
会对除分组数据外所有的数据列做处理,而实际处理数据的时候,往往是需要指定其中多列数据进行处理,并不是全部数据列,这时候就需要配合.SDcols
参数进行操作。例子如下:
# 按球员分组仅计算得分和助攻数据的均值
.SDcols]
## 用.SDcols对球员的得分和助攻数据进行处理
# ? ?player ? ? ?pts ? ? ? ast
# 2: ? 康利 15.30357 ?6.107143
# 3: ? 保罗 19.54054 ?9.972973
# 4: ? 沃尔 19.88312 10.246753
# 5: ? 威少 23.47500 10.425000
# 6: ? 欧文 19.64151 ?4.716981
– 取每个球员前两场的数据
– 把每个球员的得分和助攻数连起来作为一个变量
# 新变量为一列
val # ? ? ?player val
# ? 1: ? 库里 ?46
# ? 2: ? 库里 ?37
# ? 3: ? 库里 ?17
# ? 4: ? 库里 ?27
# ? 5: ? 库里 ?21
# ?--- ? ? ? ? ?
# 834: ? 欧文 ? 5
# 835: ? 欧文 ? 2
# 836: ? 欧文 ? 2
# 837: ? 欧文 ? 4
# 838: ? 欧文 ? 4
## 新变量为列表
# ? ?player ? ? ? ? ? ? ? ?val
# 1: ? 库里 46,37,27,21,39,
# 2: ? 康利 22,12,24,7,19,136); font-style: italic;"># 3: ? 保罗 12,5,13,25,20,136); font-style: italic;"># 4: ? 沃尔 15,22,14,8,136); font-style: italic;"># 5: ? 威少 13,23,26,136); font-style: italic;"># 6: ? 欧文 35,11,15,10,
小结
data.table的一般语法形式如下:
]
i
选择行:
-
(编辑:青岛站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!