计算新变量并使用这些变量来计算其他变量

时间:2019-07-12 12:50:49

标签: r

使用两列中的以下数据,我试图计算新变量,然后将其用于计算其他变量。我拥有的两个变量是“面积”和“观察到”

Area         Observed
3353        31
2297        2
1590        15
1087        16
817         2
847         10
1014        28
872         29
1026        29
1215        21

我需要通过求和“面积”并将每个“面积”值除以总和来计算一个称为“相对面积”的新变量。例如3353/14118 = 0.237

然后,我需要通过累加“已观察”列并将每个值乘以新计算的“ RelativeArea”,来计算一个名为“ Expected”的新变量。

我得到的错误是:列“ Expected”的长度必须为10(行数)或1,而不是0

下一个列需要计算为“ O-E”,即“已观察”列减去“期望”列(新计算的列)。当然,由于上述错误,我无法做到这一点。

我已经能够生成第一个新变量“ RelativeArea”,但是无法创建下一个“ Expected”

我使用的代码:

library(tidyverse)
data <- read.csv("data1.csv")
data %>% mutate(RelativeArea = data$Area/sum(data$Area)) ##this works
data %>% mutate(Expected = data$RelativeArea*sum(data$Observed)) ##this DOES NOT WORK and gives me the error: Column "Expected" must be length 10 (the number of rows) or one, not 0 

我希望“ Expected”列使用“ RelativeArea”列中的值,并将每个值与“ Observed”值的SUM相乘以计算“ Expected”值。...

1 个答案:

答案 0 :(得分:2)

删除500,并以mutate形式创建每个变量,并用逗号分隔:

data$

说明

您不需要重复调​​用data <- read.csv("data1.csv") data %>% mutate(RelativeArea = Area/sum(Area), Expected = RelativeArea*sum(Observed)) #close the mutate ,这就是为什么您未获得所需结果的原因。当您调用data$时,它正在从数据中突变,就像它在发送给第一个data$的原始数据框中所显示的那样。但是在创建第一个变量之后,您隐式创建了一个新的数据框架,该框架具有不同的变量。用逗号分隔下一个变量突变,然后在同一调用中进行下一个变量: