我对 R 相当陌生,所以我希望有人能帮助我。我的脚本之一中的输出表averagetable
如下所示,显示Standing
了三个不同集群中事件的不同比例:
> print(averagetable)
Group.1 Standing
1 cluster1 0.5642857
2 cluster2 0.7795848
3 cluster3 0.7922980
请注意,每次我运行脚本时,R 都可以为这些值分配不同的集群名称(cluster1
,cluster2
或cluster3
)averagetable$Standing
。另一个输出可以是:
> print(averagetable)
Group.1 Standing
1 cluster1 0.7795848
2 cluster2 0.5642857
3 cluster3 0.7922980
另一方面,我的脚本生成tableresults
数据帧。请在head()
下面找到示例:
> head(tableresults)
ACTIVITY_X ACTIVITY_Y ACTIVITY_Z winning_cluster
1 19 21 28 cluster3
2 20 14 24 cluster3
3 34 35 49 cluster3
4 18 5 19 cluster2
5 23 27 35 cluster3
6 33 20 39 cluster3
我的问题很简单。我想根据三个规则在tableresults
更改列中的字符串时转换数据winning_cluster
:
1)写Standing
在tableresults$wining_cluster
由具有最高群集名称替换它Standing
的价值averagetable
。
2)写Moving/Feeding
在tableresults$wining_cluster
由具有第二最高群集名称替换它Standing
的价值averagetable
。
3)写入Feeding/Moving
在tableresults$wining_cluster
由具有第三高群集名称替换它Standing
的价值averagetable
。
换句话说,这是所需的输出:
> head(tableresults_output)
ACTIVITY_X ACTIVITY_Y ACTIVITY_Z winning_cluster
1 19 21 28 Standing
2 20 14 24 Standing
3 34 35 49 Standing
4 18 5 19 Moving/Feeding
5 23 27 35 Standing
6 33 20 39 Standing
请注意,具有基于值的分层组件非常重要,该组件将根据averagetable
值分配条件 1) 2) 或 3) 。使用以下方法无法解决此问题:
averagetable$classification <- factor(x = as.character(sort(averagetable$Standing)),
labels = c('Feeding/Moving', 'Moving/Feeding','Standing'))
使用此命令Standing
将始终链接到cluster1
, Moving/Feeding
tocluster2
和Feeding/Moving
tocluster3
并且在averagetable
重新生成时不一定正确。
无论如何,感谢任何帮助,我希望我的问题对论坛来说足够有趣。
这是一个刺:
tableresults <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
ACTIVITY_X ACTIVITY_Y ACTIVITY_Z winning_cluster
1 19 21 28 cluster3
2 20 14 24 cluster3
3 34 35 49 cluster3
4 18 5 19 cluster2
5 23 27 35 cluster3
6 33 20 39 cluster3")
averagetable <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
Group.1 Standing
1 cluster1 0.5642857
2 cluster2 0.7795848
3 cluster3 0.7922980")
averagetable$x <- c("Standing", "Moving/Feeding", "Feeding/Moving")[ rank(-averagetable$Standing) ]
merge(tableresults, averagetable[,c(1,3)], by.x="winning_cluster", by.y="Group.1")
# winning_cluster ACTIVITY_X ACTIVITY_Y ACTIVITY_Z x
# 1 cluster2 18 5 19 Moving/Feeding
# 2 cluster3 19 21 28 Standing
# 3 cluster3 20 14 24 Standing
# 4 cluster3 34 35 49 Standing
# 5 cluster3 23 27 35 Standing
# 6 cluster3 33 20 39 Standing
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句