在R中的data.table包中,有一种方法可以在' by'中使用字符向量。计算声明?
以下是使用mtcars从中获得所需输出的示例:
mtcars <- data.table(mtcars)
ColSelect <- 'cyl' # One Column Option
mtcars[,.( AveMpg = mean(mpg)), by = .(ColSelect)] # Doesn't work
# Desired Output
cyl AveMpg
1: 6 19.74286
2: 4 26.66364
3: 8 15.10000
我知道可以通过将括号括在括号内来在J节中分配列名。
ColSelect <- 'AveMpg' # Column to be assigned for average mpg value
mtcars[,(ColSelect):= mean(mpg), by = .(cyl)]
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb AveMpg
1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 19.74286
2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 19.74286
3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 26.66364
4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 19.74286
5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 15.10000
6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 19.74286
是否有关于将什么放入&#39; by&#39;的建议?部分为了实现这个目标? 感谢。
答案 0 :(得分:1)
尝试像这样使用它
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" >
<button id="addEnv">Add</button>
<div id="envVariablesDiv">
</div>
答案 1 :(得分:0)
?data.table
部分的by
表示by
接受:
- 包含逗号分隔列名的单个字符串(其中空格很重要,因为列名可能包含空格
甚至在开始或结束时):例如,DT [,sum(a),by =“x,y,z”]- 列名的字符向量:例如,DT [,sum(a),by = c(“x”,“y”)]
是的,您可以在@ cccmir的回复中使用答案。您也可以使用c()
作为@akrun提到,但这似乎有点无关紧要,除非您想要多列。
您无法使用.()
语法的原因是data.table
.()
中的list()
是别名by
。根据{{1}}的相同帮助,list()
语法需要表达列名 - 而不是字符串。
如果您想使用多个变量并将名称作为字符传递,请取消by
帮助中的示例:
mtcars[,.( AveMpg = mean(mpg)), by = "cyl,am"]
mtcars[,.( AveMpg = mean(mpg)), by = c("cyl","am")]