一个数除以自己不等于1?
A number divided by itself doesn't equal 1?
我不确定我在这里遗漏了什么:
library(dplyr)
df1<-data.frame(n=c(1,1,1,2,1,1,2))
mutate(df1,foo=n/mean(c(n,lag(n)),na.rm=TRUE))
n foo
1 1 0.8125
2 1 0.8125
3 1 0.8125
4 2 1.6250
5 1 0.8125
6 1 0.8125
7 2 1.6250
这到底是怎么回事?第一行基本上应该是 1/mean(1)
,即“1”。为什么我得到 0.8125?更奇怪的是在我的原始数据集中,我得到了另一个数字 - 0.608,用于基本相同的计算。我错过了什么?
试试summarise(df1, length(c(n,lag(n))))
— 向量的长度c(n,lag(n))
是行数的两倍并且均值为1.230769
.
我相信你想做的是:
mutate(df1,foo=n/rowMeans(cbind(n,lag(n)),na.rm=TRUE))
n foo
1 1 1.0000000
2 1 1.0000000
3 1 1.0000000
4 2 1.3333333
5 1 0.6666667
6 1 1.0000000
7 2 1.3333333
我不确定我在这里遗漏了什么:
library(dplyr)
df1<-data.frame(n=c(1,1,1,2,1,1,2))
mutate(df1,foo=n/mean(c(n,lag(n)),na.rm=TRUE))
n foo
1 1 0.8125
2 1 0.8125
3 1 0.8125
4 2 1.6250
5 1 0.8125
6 1 0.8125
7 2 1.6250
这到底是怎么回事?第一行基本上应该是 1/mean(1)
,即“1”。为什么我得到 0.8125?更奇怪的是在我的原始数据集中,我得到了另一个数字 - 0.608,用于基本相同的计算。我错过了什么?
试试summarise(df1, length(c(n,lag(n))))
— 向量的长度c(n,lag(n))
是行数的两倍并且均值为1.230769
.
我相信你想做的是:
mutate(df1,foo=n/rowMeans(cbind(n,lag(n)),na.rm=TRUE))
n foo
1 1 1.0000000
2 1 1.0000000
3 1 1.0000000
4 2 1.3333333
5 1 0.6666667
6 1 1.0000000
7 2 1.3333333