全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1992 1
2018-08-12
测试数据如下,使用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

二维码

扫码加我 拉你入群

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

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

全部回复
2018-8-14 01:54:25
还是没有搞定,哪位大神能帮个忙
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群