【问题标题】:Dividing variables by other variables within a dataframe将变量除以数据框中的其他变量
【发布时间】:2020-06-13 00:48:31
【问题描述】:

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

数据框:

变量: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)

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

【问题讨论】:

  • 你想按年做这个吗?你的例子似乎不包括那个。您能否在预期输出中包含一个小的 reproducible example

标签: r function variables apply new-operator


【解决方案1】:

这就是你要找的吗?

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

【讨论】:

  • 这真的比我想象的要容易得多......谢谢!
【解决方案2】:

您的函数体缺少数据框。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2016-12-09
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多