Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将行中的名称标准化,并根据R中的相似行计算几何平均值_R_Geometric Mean - Fatal编程技术网

将行中的名称标准化,并根据R中的相似行计算几何平均值

将行中的名称标准化,并根据R中的相似行计算几何平均值,r,geometric-mean,R,Geometric Mean,我有一个数据表,我想标准化“性别”中的名字,并根据每组计算几何平均数(如表中的x、y和z) 谢谢你的帮助。 下面是数据表 library(data.table) dt <- data.table(Group = c("x","x","x","y","z","z"), Sex = c("Man","Female","Feminine","Male","M","F"), Score = c(0,0.4,0.1,0.5,3,2.1)) 库(data.table) 这就是你想要的吗 geomea

我有一个数据表,我想标准化“性别”中的名字,并根据每组计算几何平均数(如表中的x、y和z)

谢谢你的帮助。 下面是数据表

library(data.table)
dt <- data.table(Group = c("x","x","x","y","z","z"), Sex = c("Man","Female","Feminine","Male","M","F"), Score = c(0,0.4,0.1,0.5,3,2.1))
库(data.table)
这就是你想要的吗

geomean <- function(v) prod(v)**(1/length(v))
res <- tapply(dt$Score, dt$Group, geomean)
或者使用
ave
创建新列

dt <- within(dt,gm <- ave(Score,Group,FUN = geomean))
> dt
Group      Sex Score      gm
1:     x      Man   0.0 0.00000
2:     x   Female   0.4 0.00000
3:     x Feminine   0.1 0.00000
4:     y     Male   0.5 0.50000
5:     z        M   3.0 2.50998
6:     z        F   2.1 2.50998
因此


是的,但我想做一个新的专栏,说明每组的几何平均数?是的,这就是我想要的。非常感谢你。但是“Sex”必须标准化为“M”或“F”。@Twinstan我更新了我的答案,请检查这是否是您想要的。请分享您已经尝试过的内容,而不是要求别人为您编写代码
dt <- within(dt,gm <- ave(Score,Group,FUN = geomean))
> dt
Group      Sex Score      gm
1:     x      Man   0.0 0.00000
2:     x   Female   0.4 0.00000
3:     x Feminine   0.1 0.00000
4:     y     Male   0.5 0.50000
5:     z        M   3.0 2.50998
6:     z        F   2.1 2.50998
dt <- within(transform(dt,Sex = toupper(substr(Sex,1,1))),
             gm <- ave(Score,Group,Sex,FUN = geomean))
> dt
   Group Sex Score  gm
1:     x   M   0.0 0.0
2:     x   F   0.4 0.2
3:     x   F   0.1 0.2
4:     y   M   0.5 0.5
5:     z   M   3.0 3.0
6:     z   F   2.1 2.1