楼主: dbcoffee
2053 1

[问答] 怎么在data.table的参数中使用变量(求救)? [推广有奖]

  • 0关注
  • 0粉丝

已卖:86份资源

硕士生

51%

还不是VIP/贵宾

-

威望
0
论坛币
181 个
通用积分
170.9881
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1159 点
帖子
62
精华
0
在线时间
211 小时
注册时间
2015-6-16
最后登录
2022-7-10

楼主
dbcoffee 发表于 2018-8-12 21:39:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
测试数据如下,使用data.table求v列的均值,由于我的数据需要循环做均值,所以过程中使用到了变量,但是data.table中默认将变量认作是列名,如何解决?
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
col_name="v"
DT[,mean(col_name),by=x]  #求v列的均值,结果出不来,因为data.table将col_name直接作为列名了(字符串)
DT[,mean(v),by=x]  #求v列的均值,这个结果是可以出来的,上面的那个问题怎么解决?

这是生成表DT的结构
> DT
   x y v
1: b 1 1
2: b 3 2
3: b 6 3
4: a 1 4
5: a 3 5
6: a 6 6
7: c 1 7
8: c 3 8
9: c 6 9
这是DT[,mean(v),by=x] 执行的结果
> DT[,mean(v),by=x]  
   x V1
1: b  2
2: a  5
3: c  8
这是DT[,mean(col_name),by=x] 执行的结果
> DT[,mean(col_name),by=x,with=FALSE]  
Error in if (any(w <- (j > ncol(x)))) stop("Item ", which.first(w), " of j is ",  :
  missing value where TRUE/FALSE needed
In addition: Warning message:
In mean.default(col_name) :
  argument is not numeric or logical: returning NA

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何解决 测试数据 字符串 如何解 生成表

沙发
dbcoffee 发表于 2018-8-14 01:54:25
还是没有搞定,哪位大神能帮个忙

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 23:23