gpt4 book ai didi

r - 用 ddply 循环几列

转载 作者:行者123 更新时间:2023-12-01 07:11:08 26 4
gpt4 key购买 nike

我有一个 df :
head(df) :

  Year              Asset1       Asset2        Asset3 Asset4    Asset5 
1 1857 1729900 32570 288482 1251642 0 0 67374 89832
2 1858 1870213 35255 312262 1354817 0 0 71948 95931
3 1859 1937622 36418 322562 1399505 0 0 76773 102364
4 1860 1969257 207557 83393 1484403 0 0 83102 110802
5 1861 2107481 222969 89585 1594627 0 0 85843 114457
6 1862 2306227 235498 94619 1684234 0 0 80613 211263

我用 ddply构建一个新的 df,其中 Asset 2:5 除以 Asset1:
dft<-ddply(df,.(Year),transform, 

Asset2=Asset2/Asset1,
Asset3=Asset3/Asset1,
Asset4=Asset4/Asset1,
Asset5=Asset5/Asset1)

但是如果有很多列,它会安静很多工作......有什么建议吗?

此致!

最佳答案

这是什么sweep是为了:

读入数据的(修改的)版本:

m <- read.table(text = " Year              Asset1       Asset2        Asset3 Asset4    Asset5 
+ 1857 1729900 32570 288482 1251642 0
+ 1858 1870213 35255 312262 1354817 0
+ 1859 1937622 36418 322562 1399505 0
+ 1860 1969257 207557 83393 1484403 0
+ 1861 2107481 222969 89585 1594627 0
+ 1862 2306227 235498 94619 1684234 0 ",header = TRUE,sep = "")
> m
Year Asset1 Asset2 Asset3 Asset4 Asset5
1 1857 1729900 32570 288482 1251642 0
2 1858 1870213 35255 312262 1354817 0
3 1859 1937622 36418 322562 1399505 0
4 1860 1969257 207557 83393 1484403 0
5 1861 2107481 222969 89585 1594627 0
6 1862 2306227 235498 94619 1684234 0


> m[,3:6] <- sweep(m[,3:6],1,m[,2],"/")
> m
Year Asset1 Asset2 Asset3 Asset4 Asset5
1 1857 1729900 0.01882768 0.16676224 0.7235343 0
2 1858 1870213 0.01885079 0.16696601 0.7244186 0
3 1859 1937622 0.01879520 0.16647313 0.7222797 0
4 1860 1969257 0.10539864 0.04234744 0.7537884 0
5 1861 2107481 0.10579882 0.04250809 0.7566507 0
6 1862 2306227 0.10211397 0.04102762 0.7302984 0

关于r - 用 ddply 循环几列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com