我的data.frame
df <- data.frame(ID=rep(1:3, 3), Obs_1=rnorm(9), Obs_2=rnorm(9), Obs_3=rnorm(9))
我想通过ID计算每个列的平均值。我尝试了两种方法: 1)
ag <- aggregate(. ~ ID, df, function(x) c(mean = mean(x)))
返回
ID Obs_1 Obs_2 Obs_3
1 1 0.41220831 -0.9999704 -0.7234958
2 2 0.03564336 0.5014259 0.4847635
3 3 0.05647885 0.2067311 -0.0542368
为什么它没有表明&#34;意思是&#34;在列名称中如何报告?像这样的东西:
Obs_1.mean Obs_2.mean Obs_3.mean
2)第二种方法
df[, c(mean = lapply(.SD, mean), sd = lapply(.SD, sd)), by = ID]
它给出了
unused argument (by = ID)
谢谢
答案 0 :(得分:2)
这是一种方法:
echo Write log file > LogStart.txt
C:\Windows\System32\robocopy.exe "\\PCICSWKS001\D$\ToBeMoved" "V:" /s /e /MOV /r:0 /W:0
echo Write log file > LogEnd.txt
它产生:
import shlex
size_cmd = [
'ssh', '-l', 'root', '-A', rh,
'-i', '/Users/macbookpro/Development/serverkey/id_rsa',
'du -sh %s' % shlex.quote(path),
]
关于你的问题为什么这个伎俩
df <- data.frame(ID=rep(1:3, 3),
Obs_1=rnorm(9),
Obs_2=rnorm(9),
Obs_3=rnorm(9))
ag <- aggregate(. ~ ID, df, FUN = mean)
colnames(ag) <- sapply(colnames(ag),
FUN = function(x) { paste0(x, ifelse(x=="ID", "", ".mean")) })
将名称“mean”粘贴到FUN的结果不起作用:
我想这是由于aggregate()执行的分组。理论上,每个组可能会返回一个不同的名称。哪些可能存在冲突的名称应聚合()然后使用它来命名聚合数据框的完整列??
如果没有发生分组,就像这里一样,
ID Obs_1.mean Obs_2.mean Obs_3.mean
1 1 0.2675131 -0.3494175 -0.3128264
2 2 1.0988356 -0.6645116 -0.2192402
3 3 -1.1569562 -0.4040192 -0.1265475
我们得到了预期的名字:
FUN = function(x) { c(mean = mean(x)) })