将变量除以数据框中的其他变量

问题描述 投票:0回答:2

我有一个数据框,其中包含按年份列出的几个变量。我想将一组变量除以同一年的其他变量。因此,例如:

数据框:

变量:A B C D AA BB CC DD

我想创建A / AA B / BB C / CC D / DD等的新列。

我尝试创建一个函数:

i<- 1:4
ii<-5:8
A<- function(x){i/ii}

然后运行apply函数:

apply(dataframe[1:8], 2, A)

但是这是不正确的。请帮助!

r function variables apply new-operator
2个回答
0
投票

这是您要寻找的吗?

a<-as.data.frame(matrix(80:1,ncol=8))
a
   V1 V2 V3 V4 V5 V6 V7 V8
1  80 70 60 50 40 30 20 10
2  79 69 59 49 39 29 19  9
3  78 68 58 48 38 28 18  8
4  77 67 57 47 37 27 17  7
5  76 66 56 46 36 26 16  6
6  75 65 55 45 35 25 15  5
7  74 64 54 44 34 24 14  4
8  73 63 53 43 33 23 13  3
9  72 62 52 42 32 22 12  2
10 71 61 51 41 31 21 11  1

a[1:4]/a[5:8]
         V1       V2       V3        V4
1  2.000000 2.333333 3.000000  5.000000
2  2.025641 2.379310 3.105263  5.444444
3  2.052632 2.428571 3.222222  6.000000
4  2.081081 2.481481 3.352941  6.714286
5  2.111111 2.538462 3.500000  7.666667
6  2.142857 2.600000 3.666667  9.000000
7  2.176471 2.666667 3.857143 11.000000
8  2.212121 2.739130 4.076923 14.333333
9  2.250000 2.818182 4.333333 21.000000
10 2.290323 2.904762 4.636364 41.000000

0
投票

您的函数体缺少数据框。

您需要添加变量(在您的情况下为数据框),并且您可以使用方括号指示列信息

i <- 1:4
ii <-5:8

A <- function(x){ x[i]/x[ii] }

dataframe <- as.data.frame(matrix(80:1,ncol=8))

A(dataframe)

         V1       V2       V3        V4
1  2.000000 2.333333 3.000000  5.000000
2  2.025641 2.379310 3.105263  5.444444
3  2.052632 2.428571 3.222222  6.000000
4  2.081081 2.481481 3.352941  6.714286
5  2.111111 2.538462 3.500000  7.666667
6  2.142857 2.600000 3.666667  9.000000
7  2.176471 2.666667 3.857143 11.000000
8  2.212121 2.739130 4.076923 14.333333
9  2.250000 2.818182 4.333333 21.000000
10 2.290323 2.904762 4.636364 41.000000
© www.soinside.com 2019 - 2024. All rights reserved.