使用两列中的以下数据,我试图计算新变量,然后将其用于计算其他变量。我拥有的两个变量是“面积”和“观察到”
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”值。...
答案 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$
的原始数据框中所显示的那样。但是在创建第一个变量之后,您隐式创建了一个新的数据框架,该框架具有不同的变量。用逗号分隔下一个变量突变,然后在同一调用中进行下一个变量: